2011-10-19 69 views
0

我想JSON字符串解析:JSON字符串不会被解析

MyJsonString:

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/

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

我走过了

T他的例子工作正常,但为此,我编辑了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()}" + 
      "]" + 
     "}" + 
     "}}"; 

但是当我尝试相应的编辑它是一个有效的Java字符串后,解析这个myJsonString和运行项目,它给了我警告,并且它不显示给我标题的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字符串转换为有效的Java字符串?

任何帮助表示赞赏。

编辑:

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(); 

我想敬酒状态值这个way.But我不能。请帮忙。

+1

我不明白为什么你编辑的JSON字符串,编辑后的版本并不像有效的JSON格式到我所以这可能就是为什么你会收到错误。 –

+0

但是在例子中,它是工作。我是JSON的新手,所以我开始使用示例,因为它的工作,我试图编辑我的JSON字符串like.If我不应该编辑JSON字符串,如何使用它与Java字符串对象? – Hiral

+0

你为什么要编辑JSON字符串?按原样使用。使用JSON对象和JSON数组从中获取值。 – user370305

回答

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()\"}]}}}"; 
+0

感谢您的response.if我这样做,它将如何成为一个有效的Java字符串?我的意思是,使它“数”:“2”,在“:”给我错误。 – Hiral

+0

检查我编辑的答案。 –

+0

Thanks.It确实帮助我制作了有效的Json字符串。但是,我仍然没有在Toast中得到适当的回应。 – Hiral

3

您的java代码中的字符串不是有效的JSON字符串。你不用引号括住字符串。试试这个:

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

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