Я пытаюсь проверить мою службу REST на строку JSON из расширенного клиента REST от Chrome. У меня есть вложенный JSON. Я принимаю это как строки и отображения его на мой POJO класс:Извлечение значений из вложенного JSON после де-сериализации
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(addressString, AddressPOJO.class);
Здесь addressString держит JSON строки, приведенной ниже
{
"location":"[{\"Asia\":[{\"India\":[{\"city\":\"Bengaluru\"}]}], [{\"India\":[{\"city\":\"Mumbai\"}]}]}]
}
Мой AddressPOJO имеет переменную:
Map<String,?> location = new HashMap();
Я извлекаю значения из POJO на
Map<String, ?> locations = addressPOJO.getLocation();
Iterator iterator1 = locations.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry pair1 = (Map.Entry)iterator1.next();
Map<String,?> cities = (Map<String,?>) pair1.getValue();
Iterator iterator2 = dataSets.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry pair2 = (Map.Entry)iterator2.next();
Map<String,?> city = (Map<String, ?>) pair2.getValue();
}
}
Здесь я только способен retieve второй записи, которая
[{\"India\":[{\"city\":\"Mumbai\"}]}]
Мне нужно получить все записи. Я также пытался использовать MultiMap следующим образом:
MultiMap cities = (MultiMap) pair1.getValue();
Но это не принимается компилятором. Обратите внимание, что все записи имеют динамический характер, а пары (ключ, значение) изменяются в соответствии с вводом пользователя. Любые предложения, как я могу получить все записи в этом примере.
Спасибо за ваш ответ. Извините, я, должно быть, упомянул, что удаляю все «[» символы из JSON, прежде чем сопоставлять их с POJO. Мой сторонний парень может использовать массивы для генерации JSON и, следовательно, «[». Кроме того, приведенный здесь пример - это не то, с чем я имею дело. Я просто дал несколько примеров. Итак, как уже упоминалось, я получаю ключ «Индия» не один раз. Это не будет уникальным. Теперь я делаю это уникальным, привязывая его к «_» и некоторому случайному числу. Дайте мне знать, могу ли я с этим справиться, не используя случайное число. Еще раз спасибо. –
Привет, Абхирам, во всяком случае, я думаю, вам лучше не использовать «Карту», потому что в вашем примере строка местоположения не является картой, а «списком». Если вы хотите использовать карту, попробуйте «LinkedHashMap», потому что всегда ObjectMapper представляет объект. –