2012-07-17 64 views
1

嗨沒有人知道如何創建一個包含對象的數組,每個對象包含多個對象?我似乎無法讓我的頭一輪就Android創建一個JSON對象的JSON數組

結構應該是這樣的

Array{[object]{subobject,subobject} 
     [object]{subobject,subobject} 
    } 

繼承人是我迄今爲止

JSONObject obj = new JSONObject(json2);  
      JSONObject objData = obj.getJSONObject("data"); 
      fixturesArray = objData.getJSONArray("fixtures"); 

      JSONArray FixArray = new JSONArray(); 


      for(int t = 0; t < fixturesArray.length(); t++){ 
      JSONObject fixObj = fixturesArray.getJSONObject(t); 
      String Matchdate = fixObj.getString("matchdate"); 
      JSONObject DateObj = DateObj.put(Matchdate, DateObj); 

我的繼承人JSON本質上我有什麼,如果是燈具的飼料,我需要給他們以日期排列

{ 
    "code":200, 
    "error":null, 
    "data":{ 
     "fixtures":[ 
      { 
       "kickoff":"15:00:00", 
       "matchdate":"2012-07-28", 
       "homescore":null, 
       "awayscore":null, 
       "attendance":null, 
       "homepens":null, 
       "awaypens":null, 
       "division_id":"5059", 
       "division":"Testing 1", 
       "comp":"LGE", 
       "location":null, 
       "fixture_note":null, 
       "hometeam_id":"64930", 
       "hometeam":"Team 1", 
       "awayteam_id":"64931", 
       "awayteam":"Team 2" 
      }, { 
       "kickoff":"15:00:00", 
       "matchdate":"2012-07-28", 
       "homescore":null, 
       "awayscore":null, 
       "attendance":null, 
       "homepens":null, 
       "awaypens":null, 
       "division_id":"5059", 
       "division":"Testing 1", 
       "comp":"LGE", 
       "location":null, 
       "fixture_note":null, 
       "hometeam_id":"64930", 
       "hometeam":"Team 1", 
       "awayteam_id":"64931", 
       "awayteam":"Team 2" 
      } 
     ] 
    } 
} 
+0

你的意思是包含多個陣列權的陣列?請向我們展示您的JSON。 – Michiel 2012-07-17 16:01:02

+0

@Michiel嗨,謝謝你的幫助,我已經添加了我的json在你看到 – 2012-07-17 16:05:50

回答

5

你的意思是?:

JSONObject obj = new JSONObject(); 
obj.put("x", "1"); 
JSONObject parent_object = new JSONObject(); 
parent_object.put("child", obj); 
JSONArray array = new JSONArray(parent_object.toString()); 
0

這裏有兩段適合您的描述的JSON,它們是「包含每個對象包含多個對象的對象的數組」。第一種方法使用對象內的數組。另一個使用對象中的對象。

方法1

[ { "name" : "first object in array" , "inner array" : [ { <object> } , { <object> } ] } 
, { "name" : "second object in array" , "inner array" : [ { <object> } , { <object> } ] } ] 

要分析上面的,你需要兩個嵌套循環for(或東西遞歸)。

方法2

[ { "name" : "first object in array" , "first inner object" : { <object> } , "second inner object" : { <object> } } , <etc.> ] } ] 

第二種方法可以用單一for循環,因爲提前預期內的對象的數量知道被解析。

1

我會建議做的是使用JSON傑克遜解析器庫http://jackson.codehaus.org/然後,你可以創建一個類具有相同的字段的JSON兒子JSON的映射類將是直接的。 因此,一旦您將所有項目從JSON轉換爲類別列表,您可以按日期排序或操作數據。想象一下,src是一個包含JSON文本的字符串。有了JackSON lib,你只需要這樣做。

ObjectMapper mapper = new ObjectMapper();

List<Fixture> result = mapper.readValue(src, new TypeReference<List<Fixture>>() { });

1

JSON字符串

{ 
"result": "success", 
"countryCodeList": 
[ 
    {"countryCode":"00","countryName":"World Wide"}, 
    {"countryCode":"kr","countryName":"Korea"} 
] 
} 

這裏下面我取各國詳細

JSONObject json = new JSONObject(jsonstring); 
JSONArray nameArray = json.names(); 
JSONArray valArray = json.toJSONArray(nameArray); 

JSONArray valArray1 = valArray.getJSONArray(1); 

valArray1.toString().replace("[", ""); 
valArray1.toString().replace("]", ""); 

int len = valArray1.length(); 

for (int i = 0; i < valArray1.length(); i++) { 

Country country = new Country(); 
JSONObject arr = valArray1.getJSONObject(i); 
country.setCountryCode(arr.getString("countryCode"));       
country.setCountryName(arr.getString("countryName")); 
arrCountries.add(country); 
} 
+0

非常感謝你..我該死的需要代碼...我只是在某些時候失去了一些東西,並與我的代碼我想通了。 ..做得好... +1 – Noman 2013-01-23 11:05:39