【问题标题】:How to parse array into array JSON如何将数组解析为数组 JSON
【发布时间】:2019-03-27 09:06:10
【问题描述】:

首先我想知道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);
                            }

【问题讨论】:

  • 在for循环内,JSONObject jsonChild = arr.getJSONObject(i); if(jsonChild.has("PANINI"){ JSONArray pietanze = jsonChild .getJSONArray("PANINI"); }
  • “我想知道 json 的结构是否正确” - 使用众多在线 JSON Formatters/Validators 之一。
  • @SamirMangroliya 我认为你的意思是像这样编辑codeshare.io/UbKVU 但它不起作用

标签: java android arrays json


【解决方案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);
        }
    }
    

    【讨论】:

    • 它显示了 ListDetail,但是当我尝试打开它时,应用程序崩溃而没有显示列表的内容
    • @Mattek 能否请您提供更多代码或将活动代码发送给我,以便我检查其余代码。因为我不这么认为它会因为列表而崩溃并发送一些崩溃日志。
    • 对不起,很抱歉,程序需要所有字段,而我忘记了jsp中的“panini”字段!它有效!
    • @Mattek 如果答案正确,请批准。谢谢
    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 2017-06-24
    • 2023-03-22
    • 1970-01-01
    • 2011-07-02
    • 2012-05-09
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多