從服務器解析獲取到的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;
}