2011-01-23 47 views
8

我有這樣的JSONObject:JSONObject的文字必須以 '{'

{ 
    "gutter_url" : "", 
    "sort_order" : "popularity", 
    "result" : [ 
    { 
     "afs" : "Y", 
     "release_year" : 1979, 
     "album_sort" : "Wall, The" 
    } 
    ] 
} 

,並想在位置 「結果」 來獲得陣列, 所以我寫了這個代碼:

JSONObject allCDs = new JSONObject(objectString); 
JSONArray CD_List = allCDs.getJSONArray("result"); 

但後來我得到這個異常:

Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at character 1 
at org.json.JSONTokener.syntaxError(JSONTokener.java:410) 
at org.json.JSONObject.<init>(JSONObject.java:179) 
at org.json.JSONObject.<init>(JSONObject.java:402) 
at de.htwberlin.gim.Aufgabe8_5.getCoversFor(Aufgabe8_5.java:55) 
at de.htwberlin.gim.Aufgabe8_5.main(Aufgabe8_5.java:77) 
+0

什麼是你的代碼objectString過嗎? – 2013-11-13 06:20:34

+1

你解決了這個問題嗎? – briankip 2014-09-06 20:40:48

回答

1

您在此行的末尾有兩個逗號:

"sort_order" : "popularity",, 

這也許應該是一個逗號:

"sort_order" : "popularity", 
+2

你是對的,但實際上這個逗號錯誤是因爲我縮短了這個問題的JSONObject在stackoverflow。原件完全正確並經過檢查。 – wong 2011-01-23 12:09:35

12

您可通過該字符串的JSONObject與前導空格。嘗試微調

JSONObject allCDs = new JSONObject(objectString.replace(/^\s+/,"")); 

編輯:我認爲這是JavaScript的。嘗試使用Java代碼,而不是

JSONObject allCDs = new JSONObject(objectString.trim()); 

如果仍然不行修剪它,然後顯示從字符串的第一個字符是什麼:

System.out.println((int)objectString.trim().charAt(0)); 

你應該期待123,大括號內。事實上,檢查整個內容

System.out.println((int)objectString); // or 
System.out.println((int)objectString.trim()); 

您也可以嘗試切斷一切{字符串

JSONObject allCDs = new JSONObject(objectString.substring(objectString.indexOf('{'))); 
相關問題