Как разобрать массив в array JSON

#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 Если это был правильный ответ, то, пожалуйста, подтвердите его. Спасибо