java - Jackson JsonNode 到类型集合

标签 java json collections jackson type-erasure

将 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/

相关文章:

java - 从操作栏菜单项单击调用 Activity

java - Java的Random函数的反函数

php - Android 到 JSON 到 PHP 到 MySQL

ios - 解析 json 时出现结束错误时出现 Alamofire 垃圾

java - 索引范围的上限是否总是假定为排他性的?

java - 如何在 Java 中比较两个 HashMap

java - JedisCluster 在 2.7.x 中工作,但在 Jedis 2.9.x 中不工作,JedisConnectionException 和 Connection refused

java - 函数陷入循环

java - 使用 Java 和 JSNI 的 JSON 对象的名称/值对循环

javascript - ASP MVC 集合编辑