2011-10-19 71 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\"]"; 

這應該會給你一個字符串數組。