1
私は次のようなJSON文字列を持っている:反復処理
{
"foo" : "bar",
"id" : 1,
"children":[
{
"some" : "string",
"id" : 2,
children : []
},
{
"some" : "string",
"id" : 2,
children : []
}
]
}
私は、この文字列のJSONの解析を行い、それはハッシュマップとHashMapの[]の中のすべての配列にすべてのオブジェクトをオンにします。私の問題は、JavaでこのJSON構造のすべてのノードを反復処理するために、単一の再帰関数が必要であることです。これどうやってするの?あなただけ地図の内側(ない他の配列)を持つことができる配列を想定し
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);
}
}
}
実際には、2番目の部分はうまくいきません。あいまいな呼び出しでコンパイルエラーが発生します(多態性を使用せずに関数をオーバーロードしているため)。ごめんなさい – Luis