У меня есть строка JSON, похожее на следующее:Iterate рекурсивно через глубокий HashMap
{
"foo" : "bar",
"id" : 1,
"children":[
{
"some" : "string",
"id" : 2,
children : []
},
{
"some" : "string",
"id" : 2,
children : []
}
]
}
Я делаю JSON разбор этой строки, и что превращает все объекты в HashMaps и все блоки в HashMap [] с. Моя проблема в том, что мне нужна одна рекурсивная функция для итерации по всем узлам этой структуры JSON в Java. Как я могу это сделать? Я думал, что-то вроде:
public HashMap findNode(boolean isArray, HashMap map, HashMap[] array){
//array stuff
if(isArray){
for(int i=0; i<array.length(); i++){
Object value = array[i];
if(value instanceof String)
System.out.println("value = "+value);
else if(value instanceof HashMap)
findNode(false, value, null);
else if(value instanceof HashMap[])
findNode(true, null, value);
}
//hashmap stuff
}else{
for(HashMap.Entry<String, Object> entry : map.entrySet()){
Object value = entry.getValue();
if(value instanceof String)
System.out.println("value = "+value);
else if(value instanceof HashMap)
findNode(false, value, null);
else if(value instanceof HashMap[])
findNode(true, null, value);
}
}
}
На самом деле, вторая часть не будет работать, вы получите ошибку компиляции при неоднозначном вызове (поскольку я перегружаю fucntion, не используя полиморфизм). сожалею – Luis