Android создает массив JSON объектов JSON

1

Привет, кто-нибудь знает, как создать массив, содержащий объекты, которые в каждом объекте содержат несколько объектов? я просто не могу показаться,

структура должна выглядеть так

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

heres мой 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 тоже.
  • 0
    @Michiel привет, спасибо за вашу помощь, я добавил мой JSON для вас, чтобы увидеть
Теги:

4 ответа

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

JSON String

{
"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
1

То, что я хотел бы предложить, - использовать библиотеку JackSON JSON Parser http://jackson.codehaus.org/. Тогда вы можете создать класс с теми же полями, что и сын JSON, сопоставление из класса JSON To будет прямым. Поэтому, когда у вас есть все элементы из JSON в список классов, вы можете заказывать по датам или манипулировать данными по своему усмотрению. Представьте, что src - это строка, содержащая текст JSON. С JackSON lib вам просто нужно это сделать.

ObjectMapper mapper = new ObjectMapper();

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

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 цикла, потому что вы знаете заранее, количество внутренних объектов ожидать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню