解析奇怪的JSON字符串时出现GSON问题

时间:2018-02-01 12:27:20

标签: android json gson

我有以下json字符串,

"objects": [{
    "d430f6c0-a293-4fb9-86fe-a163618cf180": {
        "id": "d430f6c0-a293-4fb9-86fe-a163618cf180",
        "in_use": 0,
        "alterable": 1,
        "comment": ""
    },
        "123-a293-4fb9-86fe-a163618cf180": {
        "id": "123-a293-4fb9-86fe-a163618cf180",
        "in_use": 2,
        "alterable": 3,
        "comment": "dfgfg"
    }
}]

并且无法找到解析它的方法,数组中的所有对象都具有前面的id,如上所示。 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先你的json数组格式错误,可以查看jsonviewer 你的json数据将是这样的:

{"objects": [{
"d430f6c0-a293-4fb9-86fe-a163618cf180": {
    "id": "d430f6c0-a293-4fb9-86fe-a163618cf180",
    "in_use": 0,
    "alterable": 1,
    "comment": ""
},
    "123-a293-4fb9-86fe-a163618cf180": {
    "id": "123-a293-4fb9-86fe-a163618cf180",
    "in_use": 2,
    "alterable": 3,
    "comment": "dfgfg"
}
}]}

现在要解析这些数据,你可以使用这个方法:

public void parseData(String jsonObjectData) {
    try {
        JSONObject jsonObject = new JSONObject(jsonObjectData);
        JSONArray jsonArray = jsonObject.getJSONArray("objects");

        for (int i = 0 ; i <jsonArray.length(); i ++)
        {
      String id = jsonArray.getJSONObject(i).getJSONObject("d430f6c0-a293-4fb9-86fe-a163618cf180").getString("id");
            Log.d("id", id);
        }

    } catch (Exception e) {

    }


}

你必须得到这样的json对象String id = jsonArray.getJSONObject(i).getJSONObject("d430f6c0-a293-4fb9-86fe-a163618cf180").getString("id"); 它将提供单个对象数据,您无法获取所有数据,因为您的json格式不正确。