データ(この場合はPersonクラス)のラッパーオブジェクトを作成し、@XMLRootElementで注釈を付けます。post
メソッドは次のようになります。
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void post(List<Person> people) {
//notice no annotation on the method param
dao.putAll(people);
//do what you want with this method
//also best to return a Response obj and such
}
これは、データがリクエストで送信される場合にこのようなことを行う正しい方法です。
ただし、JSONデータとしてQueryParamが必要な場合は、これを行うことができます
リクエストパラメータは次のようになります。Stringpersons="{\"person \ ":[{\" email \ ":\" asdasd@gmail.com \ "、\" name \ ":\" asdasd \ "}、 {\" email \ ":\" Dan@gmail.com \ "、\" name \ ":\" Dan \ "}、{\" email \ ":\" Ion@gmail.com \ "、\" name \ ":\" dsadsa \ "}、{\" email \ ":\" Dan@gmail.com \ "、\" name \ ":\" ertert \ "}、{\" email \ ":\" Ion @ gmail.com \ "、\" name \ ":\" Ion \ "}]}";
「person」という名前のJSONObjectには、Eメール:Pという名前のPersonタイプの他のJSONObjetのJSONArrayが含まれていることがわかります。次のように、それらを繰り返し処理できます。
try {
JSONObject request = new JSONObject(persons);
JSONArray arr = request.getJSONArray("person");
for(int i=0;i<arr.length();i++){
JSONObject o = arr.getJSONObject(i);
System.out.println(o.getString("name"));
System.out.println(o.getString("email"));
}
} catch (JSONException ex) {
Logger.getLogger(JSONTest.class.getName()).log(Level.SEVERE, null, ex);
}
sry