将 Jackson JsonNode
转换为 java 集合的正确方法是什么?
如果它是一个 json 字符串,我可以使用 ObjectMapper.readValue(String, TypeReference)
但对于 JsonNode
,唯一的选项是 ObjectMapper.treeToValue(TreeNode , Class)
不会提供类型化集合,或者 ObjectMapper.convertValue(Object, JavaType)
因为接受任何 POJO 进行转换而感觉不对。
还有另一种“正确”的方法还是其中之一?
最佳答案
获取 ObjectReader
与 ObjectMapper#readerFor(TypeReference)
使用 TypeReference
描述您想要的类型化集合。然后使用 ObjectReader#readValue(JsonNode)
解析 JsonNode
(大概是 ArrayNode
)。
例如,获取List<String>
来自仅包含 JSON 字符串的 JSON 数组
ObjectMapper mapper = new ObjectMapper();
// example JsonNode
JsonNode arrayNode = mapper.createArrayNode().add("one").add("two");
// acquire reader for the right type
ObjectReader reader = mapper.readerFor(new TypeReference<List<String>>() {
});
// use it
List<String> list = reader.readValue(arrayNode);
关于java - Jackson JsonNode 到类型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237835/