2016-10-28 37 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和木材應在BK組下,而不在AY組。但在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組中 –