解析JSON不使用阵列名称(Parse JSON without using array name)

2019-10-23 14:40发布

我使用GSON解析。 我能够解析使用JSON arrayName中,但我不希望使用arrayName中的,因为它不是static.arrayName可以变化,更会从服务器添加。 请建议。

JSON:

{
    "cityCode": "",
    "list": {
        "one": [
            {
                "adults": 2
            },
            {
                "adults": 2
            },
            {
                "adults": 2
            }
        ],
        "three": [
            {
                "adults": 2
            },
            {
                "adults": 2
            },
            {
                "adults": 2
            },
            {
                "adults": 2
            },
            {
                "adults": 2
            }
        ]
    }
}

Answer 1:

这适用于你的情况。 请记住,JSONObject的具有列出它的所有属性的键()方法。 你可以看到,迭代器的结果是未排序的,运行这段代码,看看结果。

static void parseJson(String json){
    try{
        JSONObject object = new JSONObject(json);

        //Get "list" JSONObject
        JSONObject obj = object.getJSONObject("list");
        //Try to get all attributes of that object
        @SuppressWarnings("unchecked")
        Iterator<String> iterator = obj.keys();
        while (iterator.hasNext()) {
            String key = iterator.next();
            JSONArray arr = obj.getJSONArray(key);
            int size = arr.length();
            for(int i = 0; i < size; i++){
                JSONObject o = arr.getJSONObject(i);
                Log.e("JSON", "=> "+o.getInt("adults"));
            }
        }
    }catch(JSONException e){
        e.printStackTrace();
    }
}


Answer 2:

您的JSON应该像以下。

{
    "cityCode": "",
    "list":[
            {
                "index":"one"
                "adults": 2
            },
            {
                "index":"one"
                "adults": 2
            },
            {
                "index":"one"
                "adults": 2
            },
            {
                "index":"three"
                "adults": 2
            },
            {
                "index":"three"
                "adults": 2
            },
            {
                "index":"three"
                "adults": 2
            },
            {
                "index":"three"
                "adults": 2
            },
            {
                "index":"three"
                "adults": 2
            }
        ]
}

分享你的服务器端代码。



文章来源: Parse JSON without using array name