如何使用json2pojo插件解析动态大小的json数组

时间:2017-10-26 17:21:56

标签: android json retrofit2

我正在开发一个Android项目,我必须显示一些项目以响应我将使用提供的API发送到服务器的请求。

我会在响应中获得一个JSON对象,其中包含一个JSON数组作为其中的一个元素。

我的问题是JSON数组里面可能有几个JSON对象,如何处理这种情况是我所不知道的。

"Details": [
    {
    "OrderId": 7615,
    "ProductId": 1292406,
    "ProductImageFormat": "jpg",
    "ProductImageId": 1752,
    "ProductImageUrl": "",
    "ProductOrgImageUrl": "",
    "ProductLargeImageUrl": "",
    "ProductName":""
    "ProductSlug": ""
    "ProductSubTitle": ""
    "Quantity": 1,
    "UnitPrice": 8300
    },
    {
    "OrderId": 7615,
    "ProductId": 23568452,
    "ProductImageFormat": "jpg",
    "ProductImageId": 1895,
    "ProductImageUrl": "",
    "ProductOrgImageUrl": "",
    "ProductLargeImageUrl": "",
    "ProductName":""
    "ProductSlug": ""
    "ProductSubTitle": ""
    "Quantity": 1,
    "UnitPrice": 3500
    }
]

我可能会在一个数组中获得具有不同值的单个对象中的几个,如上所示。

我能做些什么吗?

编辑:我的意思是数组大小是动态的,我不知道如何处理动态大小的JSON数组

1 个答案:

答案 0 :(得分:0)

首先,您提供的JSON是无效。所以我要纠正它并假设以下(“详细信息”数组包含在JSONObject

{
"Details": [
    {
    "OrderId": 7615,
    "ProductId": 1292406,
    "ProductImageFormat": "jpg",
    "ProductImageId": 1752,
    "ProductImageUrl": "",
    "ProductOrgImageUrl": "",
    "ProductLargeImageUrl": "",
    "ProductName":"",
    "ProductSlug": "",
    "ProductSubTitle": "",
    "Quantity": 1,
    "UnitPrice": 8300
    },
    {
    "OrderId": 7615,
    "ProductId": 23568452,
    "ProductImageFormat": "jpg",
    "ProductImageId": 1895,
    "ProductImageUrl": "",
    "ProductOrgImageUrl": "",
    "ProductLargeImageUrl": "",
    "ProductName":"",
    "ProductSlug": "",
    "ProductSubTitle": "",
    "Quantity": 1,
    "UnitPrice": 3500
    }
   ]
}

获取数组并迭代它(假设外部对象被称为jo):

  try {
        JSONArray ja = jo.getJSONArray("Details");
        for (int i = 0; i < ja.length(); i++) {
            JSONObject jsonObject = ja.getJSONObject(i);
            Log.i("JSON", jsonObject.toString());
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

这样您就可以处理任意长度的JSON数组。