在android中解析不规则JSON格式

在android中解析不规则JSON格式,android,json,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":

你好,朋友们,我有以下内容
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}
}

那么我该如何解析它呢?

用大括号括起来,就可以将它转换成合法的JSON。因此,如果您有字符串:

var badJSON = '"RateLog" : { "1156": 4, ... }';
您可以这样做:

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

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

您必须改进JSON格式,如下所示:

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

您可以使用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   
}
String jsonString=“您的JSON字符串”;
Pojo Pojo=new Gson().fromJson(jsonString,Pojo.class);
Pojo类{
ArrayList社区;
HashMap速率日志;
//二传手和接球手
}
不使用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());
Gson-Gson=new-Gson();
String jsonString=“您的JSON字符串”;
JsonObject jsonObj=gson.fromJson(jsonString,JsonElement.class).getAsJsonObject();
HashMap RateLog=gson.fromJson(jsonObj.get(“RateLog”).toString(),new-TypeToken(){}.getType());
您可以迭代RateLog HashMap以获得键、值对。

JSONObject json=new JSONObject(jsonString);
        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
        .
        .
    .
JSONArray数组=json.getJSONArray(“社区”); 对于(int i=0;i
有关本教程的更多信息,请参阅


您确定这是您的完整JSON数据吗?无效。请在此处签入您的整个
JSON
。您发布的
JSON
数据无效。请检查一次。@SpringBreaker现在检查我的完整jsonformate@T-用你的编辑快速检查我的json格式,json有什么不规则之处?没错!JSON用于以模式交换数据。那么TypeToken类呢?@HarshalKalavadiya TypeToken类将出现在Gson库中:当我粘贴行
HashMap RateLog=gson.fromJson(jsonObj.get(“RateLog”).toString(),TypeToken(){}.getType())它给了我一个错误,比如TypeToken无法解析为变量创建局部变量,我使用google-gson-2.2.4 jarthat@HarshalKalavadiya查找我的更新答案,在TypeTokenUse import com.google.gson.reflect.TypeToken之前遗漏了新的;对于TypeToken类