将Json字符串转为对象JSONObject
有些JSON类型的字符串无法直接转对象,需要先做处理。例如dataWrap.collectData()收集的数据:
jsonStr = {"dataWrap.jsonData":"\"data\":{\"id\":\"177\",\"name\":\"张三\",\"age\":\"21\",\"联系方式\":\"13355556666\",\"createtime\":\"2022-01-21 16:49:42\"}"}`
将其转为对象的思路:
1.截取data后的冒号:之后的内容 A
2.截取 A 后的最后的 "}
3.去除反斜杠
4.转为字符串
/**
* jsonStr 转为 JSONObject
* @param jsonStr
* @return
*/
public JSONObject toJSONObject(String jsonStr){
if(StringUtils.isEmpty(jsonStr)){//字符串为空
return null;
}
JSONObject obj = null; //定义返回结果
String[] strArray = jsonStr.split(":",3);
if(strArray.length>2){
String str = strArray[2]; //截取 "data": 后的
String str2 = str.substring(0,str.length() -2).toString(); //将最后的 "} 去除
str2 = str2.replaceAll("\\\\",""); //或者 str = str.replace("\\",""); //将反斜杠去除
obj = new JSONObject().fromObject(str2); //将json字符串转换为json对象
}
return obj;
}
到时候可以直接调用上述方法:
JSONObject obj1 = toJSONObject(jsonStr);