Android创建JSON对象的JSON数组

时间:2012-07-17 15:58:01

标签: android 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"
            }
        ]
    }
}

4 个答案:

答案 0 :(得分: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());

答案 1 :(得分:2)

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);
}

答案 2 :(得分:1)

我建议使用JackSON JSON Parser库http://jackson.codehaus.org/然后你可以创建一个与JSON相同字段的类,JSON To类的映射将是直接的。 因此,一旦将JSON中的所有项目都放入类列表中,您就可以按日期排序或根据需要操作数据。想象一下,src是一个包含JSON文本的String。使用JackSON lib,你只需要这样做。

ObjectMapper mapper = new ObjectMapper();

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

答案 3 :(得分:0)

以下是符合您描述的两个JSON,即“包含每个对象中包含多个对象的对象的数组”。第一种方法在Objects中使用Arrays。另一个使用对象中的对象。

方法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循环进行解析,因为您事先知道要预期的内部对象的数量。