org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject

從服務器解析獲取到的Json字符串突然報了這個異常

解決方案1:
對獲得的字符串做進一步處理

// jsonStr是你獲得的json字符串
String json = jsonStr.substring(jsonStr.indexOf("{"), jsonStr.lastIndexOf("}") + 1);

原因分析:服務器端編碼方式變更。

我的異常產生是由於服務端數據編碼位數變更,打印處理前後的字符串長度差了兩個字節。

還有另一種說法,也是編碼問題

在編寫json文件的時候,採用utf-8編碼,utf8有個BOM格式(json串頭部發現字符:”\ufeff” )。

解決方案2:
去掉這個格式就ok了。

public static String JSONTokener(String str_json) {  
         // consume an optional byte order mark (BOM) if it exists  
         if (str_json != null && str_json.startsWith("\ufeff")) {  
             istr_json = str_json.substring(1);  
         }  
         return str_json;  
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章