未解析JSON字符串

时间:2011-10-19 13:14:03

标签: java android json

我想解析一个JSON字符串:

MyJsonString:

{
  "status": "ok",
  "count": 2,
  "count_total": 9,
  "pages": 5,
  "posts": [
    {
      "id": 432,
      "type": "post",
      "title": "Title 1"
    },
    {
      "id": 434,
      "type": "post",
      "title": "Title 2"
    }
  ]
}

我经历过:

http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

http://p-xr.com/android-tutorial-how-to-parse-read-json-data-into-a-android-listview/

示例工作正常,但为此,我编辑了JSON字符串以使其成为Java字符串。

例: JSON字符串:

{"menu": {
    "id": "file",
    "value": "File",
    "popup": {
    "menuitem": [
        {"value": "New", "onclick": "CreateNewDoc()"},
        {"value": "Open", "onclick": "OpenDoc()"},
        {"value": "Close", "onclick": "CloseDoc()"}
          ]
    }
}}

我编辑到:

String jsonStr = "{menu: {" + 
        "id: file," + 
        "value: File," + 
        "popup: {" + 
          "menuitem: [" + 
            "{value: New, onclick: CreateNewDoc()}," + 
            "{value: Open, onclick: OpenDoc()}," + 
            "{value: Close, onclick: CloseDoc()}" + 
          "]" + 
        "}" + 
      "}}"; 

但是当我尝试解析这个myJsonString并相应地将其编辑为有效的Java String并运行项目后,它会给我警告并且它不会显示Toast消息,它会给我标题。

logcat的:

10-19 18:36:45.972: WARN/System.err(1250): org.json.JSONException: Unterminated object at character 101 of { status :  ok ,count : 2,count_total : 9,pages : 5,posts : [{id : 432,type :  post ,title :  Title 1 ,},{id : 434,type :  post ,title :  Title 2 ,},]}

我不知道我在哪里做错了?即使我不知道如何以编程方式将Json String转换为有效的Java String?

任何帮助表示感谢。

修改

   String jsonString="{\" status :  ok \",\"count : 2\",\"count_total : 9\",\"pages : 5\",\"posts\" : [{\" id\" : \"432\",\"type\": \" post\", \"title\" : \" Title 1 \"},{ \"id \": \"434\",\type :  post ,\"title\" : \" Title 2\"}]}";

JSONObject jsonObj = new JSONObject(jsonString);

            String status_value = jsonObj.getString("status");          

            Toast.makeText(context,"Status_value= "+status_value, Toast.LENGTH_LONG).show();

我试图以这种方式烘烤状态值。但我不能。请帮忙。

2 个答案:

答案 0 :(得分:3)

java代码中的字符串不是有效的JSON字符串。你没有用引号包围字符串。试试这个:

 String example = "[\"a\", \"b\", \"c\"]";

这应该给你一个字符串数组。

答案 1 :(得分:3)

在您的情况下,JSON的响应不是有效的。

"count": 2, which is not the correct way it should be in double quotes like this

"count": "2", same way for the rest of the response String also.

<强>更新:

您确定的JSONString是错误的,只需替换我的字符串并结帐。

第一个字符串

String jsonString = "{\"status\": \"ok\",\"count\": \"2\",\"count_total\": \"9\",\"pages\": \"5\",\"posts\":" +
        "[{\"id\": \"432\",\"type\": \"post\",\"title\": \"Title 1\"}," +
        "{\"id\": \"434\",\"type\": \"post\",\"title\": \"Title 2\"}]}";

第二个字符串

String jsonStr = "{\"menu\": {\"id\": \"file\",\"value\": \"File\",\"popup\": {\"menuitem\": " +
            "[{\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},{\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}," +
            "{\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}]}}}";