[英]How to convert list of JsonObject from google json to JsonNode object of Jackson
[英]How do you convert a Jackson JsonNode to a List of some user defined object?
使用Jackson将内部Json数组提取到Java列表的最佳方法是什么(无需转换整个Json结构)。
可以说我有杰森:
{
"objects":"that",
"I":"dont care about",
"objectsiwant":[{object1, object2,...}]
}
最后,我想列出一些我拥有的Pojo:
List<MyPojo> myPojoList;
看来我应该能够执行以下操作:
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(json);
JsonNode internalNode = rootNode.path("objectsiwant");
List<MyPojo> myPojoList = mapper.readValue(internalNode, new TypeReference<List<MyPojo>>(){});
当然,没有这样的方法签名,并且在Jackson中似乎有一些与此非常相似的东西,但是我一直找不到。
为了读取一部分(可能很大)的JSON,您可以使用具有强大DSL的json-path库来选择一个或多个JSON节点:
import com.jayway.jsonpath.JsonPath;
import net.minidev.json.JSONArray;
public class JsonPathTest
{
public static void main(String[] args) {
try (InputStream is = Files.newInputStream(Paths.get("C://temp/test.json"))) {
JSONArray objectsiwant = JsonPath.read(is, "$.objectsiwant");
System.out.println(objectsiwant.get(0)); // HashMap
} catch (Exception e) {
e.printStackTrace();
}
}
}
上面来自JB Niznet的评论正是我想要的。 再次感谢。 基本上,示例中的相关行如下所示:
List<MyPojo> myPojoList = mapper.readerFor(new TypeReference<List<MyPojo>>(){}).readValue(internalNode);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.