Джексон Джсон: Как получить несколько значений с одинаковым именем из узла 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 найти уникальные целые числа, присутствующие.

Другие вопросы по тегам