如何将数组解析为数组JSON

时间:2019-03-27 09:06:10

标签: java android arrays 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);
                            }

2 个答案:

答案 0 :(得分:1)

是的,它应该可以工作,但是我建议只使用Gson

Type type = new TypeToken<List<TipiPaniniAndServizi>>(){}.getType();
List<TipiPaniniAndServizi> tipiPaniniAndServizi = gson.fromJson(json, type);

并节省操作JSON的时间,只需考虑一下Java对象。

答案 1 :(得分:0)

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