1

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

尝试像这样访问内部对象“组”元素:

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

4

1 回答 1

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等在线工具

于 2013-08-17T05:12:38.170 回答