Джексон Джсон: Как получить несколько значений с одинаковым именем из узла json java
У меня есть строка 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
но кажется хакерским. Я уверен, что должен быть прямой способ сделать это. Любая помощь будет высоко оценена.
1 ответ
Вот, JsonNode.findValues("myList")
возвращает список JsonNode.
Вы можете перебирать каждый из этих объектов JsonNode и конвертировать их в List<Integer>
легко:
ObjectMapper mapper = new ObjectMapper();
List<Integer> list = mapper.readerFor(new TypeReference<List<Integer>>(){}).readValue(jsonNode);
Затем вы можете объединить эти списки Integers
найти уникальные целые числа, присутствующие.