我有一个包含嵌套JSONObjects的JSONObject。我需要拉出内部对象并获取它们的值。我的主要对象看起来像这样:
{"result":"success",
"message":
{
"id":"1",
"first_name":"Tony",
"last_name":"Soprano",
"group":
"{
\"group_id\":\"1\",
\"group_name\":\"bada bing\"
}",
"email":"tony.soprano@gmail.com"
}
}
尝试访问内部对象“group”元素,如下所示:
private void jsonToSharedPreferences(String jsonMessage) throws JSONException {
System.err.println(jsonMessage); //<--output looks perfect
JSONObject user = new JSONObject(jsonMessage);
String strGroup = user.getJSONObject("group").toString().substring(3);
JSONObject group = new JSONObject(strCoach.substring(strGroup.indexOf("{"), strGroup.lastIndexOf("}") + 1));
System.err.println(group.get("group_name").toString());
}
所有子字符串的原因是我在这个问题上找到帖子,表明有一些UTF-8编码(来自创建对象的PHP)在字符串的开头隐藏了三个字符。我已经尝试过使用和不使用子字符串的代码。我得到了相同的结果。
不幸的是,无论我做什么,我都会收到此错误:
org.json.JSONException: Value {"group_id":"1","group_name":"bada bing"} at group of type java.lang.String cannot be converted to JSONObject
有没有人知道为什么我的对象可以完美地输出为字符串,但是当我尝试将其转换为JSONObject时失败?我完全失去了。谢谢!
答案 0 :(得分:0)
您需要修改JSONObject以进行解析,目前它的格式不正确。
{"result":"success",
"message":
{
"id":"1",
"first_name":"Tony",
"last_name":"Soprano",
"group":
{
"group_id":"1",
"group_name":"bada bing"
},
"email":"tony.soprano@gmail.com"
}
}
等在线工具