#java #android #arrays #json
#java #Android #массивы #json
Вопрос:
прежде всего, я хотел узнать, верна ли структура json, вы можете найти JSON здесь:
http://demo8461125.mockable.io/whitemage
если это правильно, я хотел бы знать, как разобрать «PANINI», это массив внутри массива «tipopietanza»
JSONArray arr = response.getJSONArray("pietanze");
for (int i = 0; i < arr.length(); i )
{
JSONArray pietanze = response.getJSONArray("PANINI");
List<Pietanze> listapietanze =new ArrayList<>(pietanze.length());
for(int j=0;j<pietanze.length();j )
{
Pietanze tmp = new Pietanze();
tmp.setNome(pietanze.getJSONObject(j).getString("nomepietanza"));
listapietanze.add(tmp);
}
expandableListDetail.put(arr.getJSONObject(i).getString("tipopietanza"), listapietanze);
}
Комментарии:
1. внутри цикла for JSONObject jsonChild = arr.getJSONObject(i); if(jsonChild.has(«PANINI»){ JSONArray pietanze = jsonChild .getJSONArray(«PANINI»); }
2. «Я хотел узнать, правильна ли структура json» — Используйте один из многих онлайн-форматеров / валидаторов JSON.
3. @SamirMangroliya я думаю, ты имеешь в виду редактировать вот так codeshare.io/UbKVU но это не работает
Ответ №1:
Да, это должно сработать, но я предлагаю просто использовать Gson
:
Type type = new TypeToken<List<TipiPaniniAndServizi>>(){}.getType();
List<TipiPaniniAndServizi> tipiPaniniAndServizi = gson.fromJson(json, type);
И сэкономьте свое время от манипулирования JSON
, просто подумайте о своих java-объектах.
Ответ №2:
Структура JSON в порядке.
Вам нужно внести небольшие изменения в свой код для правильного получения списка.
JSONArray arr = response.getJSONArray("pietanze");
for (int i = 0; i < arr.length(); i ) {
JSONObject jsonObject = arr.getJSONObject(i);
if(jsonObject.has("PANINI")) {
JSONArray paniniJsonArray = jsonObject.getJSONArray("PANINI");
List<Panini> listPanini = new ArrayList<>();
for (int j = 0; j < paniniJsonArray.length(); j ) {
Panini panini = new Panini();
panini.setId(paniniJsonArray.getJSONObject(j).getString("id"));
panini.setNomepietanza(paniniJsonArray.getJSONObject(j).getString("nomepietanza"));
panini.setPrezzo(paniniJsonArray.getJSONObject(j).getString("prezzo"));
listPanini.add(panini);
}
expandableListDetail.put(arr.getJSONObject(i).getString("tipopietanza"), listPanini);
}
}
Комментарии:
1. Он показывает мне ListDetail, но когда я пытаюсь открыть его, приложение вылетает, не показывая мне содержимое списка
2. @Mattek не могли бы вы, пожалуйста, предоставить больше своего кода или прислать мне код действия, где я могу проверить остальной код. Поскольку я так не думаю, это сбой из-за list и отправки некоторого журнала сбоев.
3. Извините за ошибку, очевидно, что программа ожидала все поля, и я забыл поле «panini» в jsp! ЭТО РАБОТАЕТ!
4. @Mattek Если это был правильный ответ, то, пожалуйста, подтвердите его. Спасибо