2016-10-28 12 views
0

これは私のJSONファイル、リストJSON消耗品の子供ではない正確な

[{ 
    "Title": "AY", 
    "Items": [{ 
     "Name": "Alex", 
     "RoadNameShort": "AY" 
    }, { 
     "Name": "Kep", 
     "RoadNameShort": "AY" 
    }, { 
     "Name": "Lower", 
     "RoadNameShort": "AY" 
    }] 
    }, { 
    "Title": "BK", 
    "Items": [{ 
     "Name": "Chantek", 
     "RoadNameShort": "BK" 
    }, { 
     "Name": "Wood", 
     "RoadNameShort": "BK" 
    }] 
    }] 

これは私のJavaコードでは、

listDataHeader = new ArrayList<String>(); 
listDataHeade = new ArrayList<String>(); 

listDataChild = new HashMap<String, List<String>>(); 
HashMap<String, String> contact = new HashMap<>(); 

// Adding child data for lease offer 
List<String> lease_offer = new ArrayList<String>(); 


JSONArray array = new JSONArray(jsonstr); 
for (int i = 0; i < array.length(); i++) { 
    // tmp hash map for single contact 
    JSONObject c = array.getJSONObject(i); 
    listDataHeader.add(c.getString("Title")); 
    String title = c.getString("Title"); 

    JSONArray items = c.getJSONArray("Items"); 
    for (j = 0; j < items.length(); j++) { 
     JSONObject item = items.getJSONObject(j); 
     String name = item.getString("Name"); 
     Log.d("email", name); 

     listDataHeade.add(item.getString("Name")); 

     lease_offer.add(item.getString("Name")); 
     // Header into Child data 
     listDataChild.put(listDataHeader.get(i), lease_offer); 
    } 
} 

は親のために、私は Titleを使用しています。子供は Nameです。私はタイトルAY、BKであるグループのために正しく得た。しかし、私の問題は子供のためです。 Chantekと木材の名前は、グループAKではなくグループBKの下にあるべきである。しかし、AYグループでは、Chantekと木を子どもにすることもできます。

答えて

0

は、各親が以下のように新しい子リストを作成する必要があるため、反復した後、親のリストにすべてのチャイルズをすべての子を追加し、内部ループ開始前にlease_offerを初期化する必要があるため、内部ループの外listDataChildを移動しよう:

JSONArray array = new JSONArray(jsonstr); 
for (int i = 0; i < array.length(); i++) { 
    // tmp hash map for single contact 
    JSONObject c = array.getJSONObject(i); 
    String title = c.getString("Title"); 
    listDataHeader.add(title); 

    JSONArray items = c.getJSONArray("Items"); 
    /Adding child data for lease offer 
    List<String> lease_offer = new ArrayList<String>(); 
    for (j = 0; j < items.length(); j++) { 
     JSONObject item = items.getJSONObject(j); 
     String name = item.getString("Name"); 
     Log.d("email", name); 
     listDataHeade.add(name); 
     lease_offer.add(name); 
    } 
    // Header into Child data 
    listDataChild.put(listDataHeader.get(i), lease_offer); 
} 
+0

グループBKの子供もグループAYに含まれています –

関連する問題