在Android中解析不规则的JSON格式

时间:2014-03-07 05:58:22

标签: android json

朋友们,我关注JSON foramt

{
  "Communities": [],
  "RateLog": { "83": 5,"84": 4, "85": 5,"92": 5,"93": 4,"94": 5,"95": 5,"97": 5,"99": 4,"100": 5,"102": 5,"103": 5,"104": 5,"105": 5,"106": 5,"108": 4,"109": 4,"110": 4,"111": 5,"112": 4,"113": 4,"114": 4,"115": 5,"116": 5,"117": 5,"118": 4,"119": 5, "120": 5,"121": 4,"122": 5,"123": 4,"124": 4,"125": 4,"126": 5, "142": 5,"1150": 4, "1151": 4,"1152": 4, "1153": 4,"1154": 4, "1155": 4,"1156": 4, "1158": 5}
}

所以我怎么能解析它呢?

4 个答案:

答案 0 :(得分:1)

您可以将其括在大括号中,将其转换为合法的JSON。所以如果你有字符串:

var badJSON = '"RateLog" : { "1156": 4, ... }';

你可以这样做:

var goodJSON = '{' + badJSON + '}';
var parsed = JSON.parse(goodJSON);

编辑:上面的答案是在您编辑之前。使用新格式,字符串是有效的JSON,因此只需调用JSON.parse()并传递字符串以获取相应的对象结构。

答案 1 :(得分:0)

您必须改进这样的json格式:

"RateLog":[
{
     id1:1156
     id2:4
{
     id1:1155
     id2:4
}
{
     id1:1155
     id2:4
}
..]

答案 2 :(得分:0)

您可以使用Google的Gson库来解析您的回复。

使用POJO类

String jsonString = "Your JSON string";

Pojo pojo = new Gson().fromJson(jsonString, Pojo.class);

class Pojo {
    ArrayList<String> Communities;
    HashMap<String, Integer> RateLog;

    //Setters and Getters   
}

不使用POGO类

Gson gson = new Gson();

String jsonString = "Your JSON string";

JsonObject jsonObj = gson.fromJson(jsonString, JsonElement.class).getAsJsonObject();

HashMap<String, Integer> RateLog = gson.fromJson(jsonObj.get("RateLog").toString(), new TypeToken<HashMap<String, Integer>>(){}.getType());

您可以遍历RateLog HashMap以获取键值对。

答案 3 :(得分:0)

        JSONObject json = new JSONObject(jsonString);

        JSONArray array = json.getJSONArray("Communities");
        for (int i = 0; i < array.length(); i++) {
//          do stuff
        }

        JSONObject rateJson = json.getJSONObject("RateLog");

        rateJson.getInt("83"); //Will return 5
        .
        .
    .

了解更多内容

http://www.mkyong.com/java/json-simple-example-read-and-write-json/