0
我想从Chrome的高级REST客户端通过JSON字符串测试我的REST服务。我在这里有一个嵌套的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,因此'['。另外,我在这里给出的例子并不是我正在处理的确切的事情。我只是给了一些样本措辞。所以,如上所述,我不止一次地获得关键“印度”。它不会是独一无二的。我现在通过用'_'和一些随机数来追踪它。让我知道我是否可以在不使用随机数的情况下处理它。再次感谢。 –
嗨,Abhiram,无论如何,我认为你最好不要使用“地图”,因为在你的例子中,位置字符串不是地图而是“列表”。如果您想使用map,请尝试“LinkedHashMap”,因为它始终是ObjectMapper代表对象的方式。 –