杰克逊·杰森(Jackson Json):如何从JSON节点Java获取具有相同名称的多个值

时间:2018-10-07 09:00:03

标签: java json jackson jsonnode

我有一个看起来像这样的Json字符串:

{
 "generatedList1":{"myList":["1","2","3","4"]},
 "generatedList2":{"myList":["1","6","8","2"]},
 "generatedList3":{"myList":["1","12","3","11"]}
}

我想收集所有myList中存在的所有值 即[1,2,3,4,6,8,11,12]

我将字符串转换为JsonNode,然后执行JsonNode.findValues("myList")返回了List<JsonNode>。 但是,当我尝试将每个JsonNode转换为String时,会得到双引号和方括号作为String的一部分,而不仅仅是数字。 我可以将其从String中删除,但似乎很hack。 我确信必须有直接的方法来做到这一点。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在这里,JsonNode.findValues("myList")返回一个JsonNode列表。

您可以通过以下步骤迭代每个JsonNode对象并将其轻松转换为List<Integer>

ObjectMapper mapper = new ObjectMapper();
List<Integer> list = mapper.readerFor(new TypeReference<List<Integer>>(){}).readValue(jsonNode);

然后您可以组合Integers的这些列表以找到存在的唯一整数。