gpt4 book ai didi

json - play.libs.Json.fromJson 如何在 Java 中处理 List

转载 作者:行者123 更新时间:2023-12-03 04:22:37 26 4
gpt4 key购买 nike

我想使用play 2.1框架附带的Json库。但我一直坚持将 json 对象反序列化回 java 列表。

有了gson,你就可以写东西了。喜欢

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

有没有办法对 play.libs.Json.fromJson 执行相同的操作?

感谢任何帮助。

编辑(2013 年 12 月 17 日):

我执行了以下操作来解决该问题。我想有更好的方法,但我没有找到。

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;

最佳答案

Play Java 的 Json 库实际上只是 Jackson JSON 库 ( http://jackson.codehaus.org/ ) 的一个薄包装。提到了 Jackson 反序列化自定义对象列表的方法 here .

对于您的情况,一旦从响应正文中解析 json,您将执行类似的操作,假设 MyObject 是一个普通的 POJO:

JsonNode json = res.asJson();
try{
List<MyObject> objects = new ObjectMapper().readValue(json, new TypeReference<List<MyObject>>(){});
}catch(Exception e){
//handle exception
}

我假设您根据您的编辑询问有关 Play Java 的问题,Play Scala 的 JSON 库也基于 Jackson,但具有更多功能和语法糖来适应函数式编程模式。

关于json - play.libs.Json.fromJson 如何在 Java 中处理 List<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17155046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com