在解析Json时,出现is not a JSONObject 的异常
JSONObject str1=jsonObject.getJSONObject(“resultCode”);
JSONObject jsonObject = JSONObject.fromObject(content);
通过查看getJSONObject源码的源码发现,是传入的JSON字符串的不符合规范,但是把整个JSON返回的串在在线JSON校验工具里校验却能够通过校验
public JSONObject getJSONObject(String key) {
this.verifyIsNull();
Object o = this.get(key);
if(JSONNull.getInstance().equals(o)) {
return new JSONObject(true);
} else if(o instanceof JSONObject) {
return (JSONObject)o;
} else {
throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] is not a JSONObject.");
}
}
最后发现,是对方在写入JSON工具类时传入的不是class而是字符串。。导致多了双引号。
String dataString = jsonObject.get("data").toString(); dataString = dataString.substring(1, dataString.length() - 1);//去掉头尾的双引号才是标准Json
最后把双引号去掉问题解决。
总结:1,在写入Json发送时尽量要直接传入bean
2,JSONObject.toBean(jsonObject, clazz, clazz.newInstance().getFieldMapping());
该方法把JSON转为bean时,目标Json中的list尽量都在第二层,这样解析的代码就可以复用