无法将字符串转换为JSONObject


Cannot convert string to JSONObject

我有一个包含嵌套JSONObject的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"
  }
}

尝试访问内部对象"组"元素,如下所示:

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时却失败了吗?我完全不知所措。谢谢

您需要修改您的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"
}
}

使用在线工具,如JSONPARSER