2013-07-12 88 views
0

我與RESTful Web服務的工作,我得到的JSON從它像下面出錯轉換到JSON對象

response = [{"id":1,"name":"Appetizers","image":"iVBORw0KGgoAAAANSUhEUgAAADgAAAAkCAIAAABT8G6pAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABb5SURBVFhHPVgHUFPrtmbevTPvvnPvO8eKKJ1ASAikEEIaSYBAEkroSLWBHex67A3FBhYsWEFUBBuCDRRRpCMlhPS+0zs1gHD0HN72vjfvnzV/dpI9s7 .... 

我想這個JSON轉換爲JSONObject的

JSONObject obj = new JSONObject(response); 

當我執行這個命令我得到了下面的錯誤

org.json.JSONException: Value [{"resturantID":{"phoneNo":"a","id":1,"fax":"a","address":"a" ... 

我的程序在我用的時候工作的很好glassfish 3因爲json結構不同於此 有什麼問題?

+1

此處「響應」字符串不是JSONObject。這是JSONArray。您首先需要獲取JSONArray,並從中獲取所有JSONObjects – Rajeev

回答

1

如果您response持有迭代 後的StringBuilder的輸出,那麼你可以試試下面的代碼

try{ 
      jArray = new JSONArray(response); 
      for(int i=0;i<jArray.length();i++){ 
        json_data = jArray.getJSONObject(i); 
      } 
} 

注意:不要忘了宣佈jArray(JSONARRAY的對象)和json_data(JSONOBJECT的對象)在課程級別

+0

偉大的解決方案,它的工作 –

+0

我很高興它工作 –

0

我想,問題在於你的JSON。 JSON無效。

"id":1 

應該

"id":"1" 

請檢查。

+1

這實際上是有效的,它只是一個'int'而不是'String' –

1

這是一個JSONArray而不是JSONObject - 通過它進行一個JSONObject,使用

JSONObject jsonObject = jsonArray.getJSONObject(0); 

這個從這個JSONArray獲得第一的JSONObject。

如果您有多個一個JSONObjects,使用此:

JSONObject jsonObject; 
for(int n = 0; n < jsonArray.length(); n++) 
{ 
    jsonObject = jsonArray.getJSONObject(n); 
}