初めて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")
を単に指摘するだけで十分ですか?次に、このメソッドは任意のタイプのオブジェクトを返しますか?または文字列のみですか?これらのオブジェクトの追加の処理または変換が必要ですか?
これらの問題に対処する初心者として私を助けてください。前もって感謝します!
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
Org.json http://www.json.org/Java/ のようなパッケージを使用できます
JSONObjectsをより頻繁に使用する必要があるためです。
そこで、JSONObjectsを簡単に作成し、それにいくつかの値を入れることができます。
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"
]}
editこれには、異なるレイヤーで応答を作成してオブジェクトとして返すことができるという利点があります
@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']}";
}
@POST
@Path ("Employee")
@Consumes("application/json")
@Produces("application/json")
public JSONObject postEmployee(JSONObject jsonObject)throws Exception{
return jsonObject;
}
このアノテーションを使用
@RequestMapping(value = "/url", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})