2016-10-28 61 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组中 –