20

初めてWebサービスを書いています。Jerseyに基づいて RESTful Web サービスを作成しました。そして、 JSONを生成したいと思います。Web サービスの正しい JSON タイプを生成するには、何をする必要がありますか?

これが私の方法の1つです:

@GET
@Path("/friends")
@Produces("application/json")
public String getFriends() {
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}";
}

@Produces("application/json")メソッドの注釈を指摘するだけで十分ですか? 次に、このメソッドは任意のタイプのオブジェクトを返す可能性がありますか? それともストリングのみ?これらのオブジェクトの追加の処理または変換が必要ですか?

これらの問題に対処するために初心者として私を助けてください。前もって感謝します!

4

5 に答える 5

32

Bean に jaxb アノテーションを付けることができます。

  @XmlRootElement
  public class MyJaxbBean {
    public String name;
    public int age;

    public MyJaxbBean() {} // JAXB needs this

    public MyJaxbBean(String name, int age) {
      this.name = name;
      this.age = age;
    }
  }

そして、あなたの方法は次のようになります:

   @GET @Produces("application/json")
   public MyJaxbBean getMyBean() {
      return new MyJaxbBean("Agamemnon", 32);
   }

最新のドキュメントには、これを扱う章があります。

https://jersey.java.net/documentation/latest/user-guide.html#json

于 2012-11-27T23:37:49.863 に答える
5

org.jsonhttp://www.json.org/java/のようなパッケージを使用できます

JSONObjectsをより頻繁に使用する必要があるためです。

そこで、JSONObjectを簡単に作成し、それにいくつかの値を入れることができます。

 JSONObject json = new JSONObject();
 JSONArray array=new JSONArray();
    array.put("1");
    array.put("2");
    json.put("friends", array);

    System.out.println(json.toString(2));


    {"friends": [
      "1",
      "2"
    ]}

編集これには、さまざまなレイヤーで応答を作成し、それらをオブジェクトとして返すことができるという利点があります

于 2012-11-28T08:55:37.977 に答える
4
@GET
@Path("/friends")
@Produces(MediaType.APPLICATION_JSON)
public String getFriends() {

    // here you can return any bean also it will automatically convert into json 
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}";
}
于 2016-07-12T06:37:10.410 に答える