2013-08-01 51 views
1

林:無法解析從字符串到JSONObject的

public void getStatus(){ 
    String status = ""; 
    try{ 
     String line; 
     StringBuilder result = new StringBuilder(""); 
     HttpURLConnection conn; 
     URL url; 
     url = new URL("http://bromio.com.mx/explore/PointOfInterestService.svc/GetData"); 
     BufferedReader rd; 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     while ((line = rd.readLine()) != null) { 
      result.append(line); 
     } 
     rd.close(); 
     Log.d("JSON: ", result.toString()); 
     JSONObject jsonObject = new JSONObject(result.toString()); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

但它拋出一個異常,似乎我不能投指向JSONObject的特定字符串。 JSON可以在此頁面中加入:(它太大以至於不能顯示!)http://bromio.com.mx/explore/PointOfInterestService.svc/GetData 解決此問題的任何幫助都會對我有所幫助。謝謝

+1

[jsonlint](http://jsonlint.com/)表示json無效。你可以在json中跳過'''嗎?而且json不能以'''開始和結束,所以就是這樣。 –

+1

你可以發佈你的堆棧跟蹤,以便我們可以看到錯誤是什麼。 – BlackHatSamurai

+0

該來源是JSON字符串,而不是JSON對象。它以雙引號開頭,以雙引號結尾,並在內部轉義雙引號和unicode序列。 – yshavit

回答

3

讓我們把你的JSON的前幾個字符

"{ \"poi\":[\u000d\u000a 
^^^ ^^^^^^ 
| | |  |-----------> not sure about all this 
| | -------------------> not acceptable in json 
| ------------------------> not acceptable in json 
---------------------------> not acceptable in json 

你得到什麼從該網站背部是無效的根JSON。如果您有控制權,請修復您的來源。或者使用字符串實用程序方法來替換這些字符。

+0

非常感謝。我必須對JSON進行子字符串刪除「特殊」字符,因爲我不知道 – chntgomez

+0

中有什麼。所有這些都只是一個轉義的json字符串。例如,\ u000d'是unicode代碼點0x000d。見http://www.json.org。簡單地刪除它們不會得到你想要的。 – yshavit

+0

@yshavit unicode位很冷,他們只是CR LF。 '\「'中的起始和尾部'''和反斜槓都不是。 –