无法将字符串转换为JSONObject

时间:2013-08-17 05:05:40

标签: php android json

我有一个包含嵌套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时失败?我完全失去了。谢谢!

1 个答案:

答案 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"
}
}

使用JSONPARSER

等在线工具