簡體   English   中英

JSONArray解析錯誤

[英]JSONArray Parsing error

我需要解析JSON數組的幫助。

[
    {
        "Header1": [
            {
                "path": "upload/images/1430572021716.jpg"
            },
            {
                "path": "upload/images/1430574003703.jpg"
            }
        ]
    },
    {
        "Header2": [
            {
                "path": "upload/images/1430574124119.jpg"
            },
            {
                "path": "upload/images/1430574203001.jpg"
            }
        ]
    }
]

我完美地收到了上面的JSONArray。 我想遍歷數組並提取標題文本“ Header1”和path的值

我不斷遇到以下錯誤消息

at 0 of type org.json.jsonarray cannot be converted to jsonobject

經過研究后,這是由於系統無法解析為JSON數組。 如果我將“列表”數組更改為objct,它確實可以工作,但是,這不是數組,因此我失去了遍歷它的能力。

這是我試圖解析數組的代碼

    JSONArray mArray;

    mArray = json;

    //download json array
    for (int i = 0; i < mArray.length(); i++) {
        if(mArray != null) {
            JSONArray list = mArray.getJSONArray(i);
            if(list != null) {
                for(int a = 0; a < list.length();a++) {
                    JSONObject elem = list.getJSONObject(a);
                    if (elem != null) {
                            listdata.add(elem.getString("path"));

                    }
                }
            }
        }
    }

您正在嘗試將頂級數組的每個元素都視為另一個數組-不是,它是一個對象。 該對象然后有另一字段,其值一個數組。 所以你想要像這樣的東西:

for (int i = 0; i < json.length(); i++) {
    JSONObject container = json.getJSONObject(i);
    // We don't know the property name, but there's only one, apparently...
    String key = container.keys().next();
    JSONArray subarray  = container.getJSONArray(key);
    for (int j = 0; j < subarray.length(); j++) {
        listdata.add(subarray.getJSONObject(j).getString("path"));
    }
}

JSON的第二級包含JSON數組元素。

正如您已經提到的,您需要將它們作為JSONObject獲得。

然后從該對象getJSONArray

//download json array
for (int i = 0; i < mArray.length(); i++) {
    if(mArray != null) {
        JSONObject element = mArray.getJSONObject(i);
        JSONArray list = element.getJSONArray("Header1");
        if(list != null) {

但是,由於"Header..."鍵正在更改,因此您可能需要通過調用keys()來推斷keys()

一個更簡單的方法是使用GSON庫並創建類似於JSON的POJO類,這是一個不錯的網站

這適用於JavaScript,非常簡單。

//mArray is your json array
let newArray = JSON.stringify(mArray);
mArray = JSON.parse(newArray);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM