作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用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/
我是一名优秀的程序员,十分优秀!