8

play 2.1 フレームワークに付属している Json ライブラリを使用したいと思います。しかし、jsonオブジェクトを逆シリアル化してJavaリストに戻すことに固執しています。

gson を使用すると、s.th と書くことができます。お気に入り

Type type = new TypeToken<List<XYZ>>(){}.getType();
List<XYZ> xyzList = gson.fromJson(jsonXyz, type); 

play.libs.Json.fromJson で同じことを行う方法はありますか?

どんな助けでも感謝します。

編集 (17.12.2013):

この問題を回避するために、次のことを行いました。もっと良い方法があると思いますが、見つけられませんでした。

List<MyObject> response = new ArrayList<MyObject>();
Promise<WS.Response> result = WS.url(Configuration.getRestPrefix() + "myObjects").get();
WS.Response res = result.get();
JsonNode json = res.asJson();
if (json != null) {
  for (JsonNode jsonNode : json) {
    if (jsonNode.isArray()) {
      for (JsonNode jsonNodeInner : jsonNode) {
        MyObject mobj = Json.fromJson(jsonNodeInner, MyObject.class);
        response.add(bst);
      }
    } else {
      MyObject mobj = Json.fromJson(jsonNode, MyObject.class);
      response.add(bst);
    }
  }
}
return response;
4

2 に答える 2

1

次のコードを使用できます。

List<YourClass> returnedRoles = new ObjectMapper().readValue(jsonString
   ,TypeFactory.defaultInstance().constructCollectionType(List.class,
   YourClass.class));
于 2014-11-19T08:24:07.637 に答える