org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject
解析服務器返回的Json串時,JSONObject對象拋出了這個異常。
原以為是返回的json格式錯誤了,仔細對比看不出所以然。至少字符上看是格式沒問題的。。
那就可能是編碼的問題了。仔細比較每個字符,的確在json串頭部發現字符:"\ufeff" 。
客戶端解決方案:
public static final String removeBOM(String data) {
if (TextUtils.isEmpty(data)) {
return data;
}
if (data.startsWith("\ufeff")) {
return data.substring(1);
} else {
return data;
}
}
服務器端解決方案:
將輸出此json的php源碼重新用editplus之類用utf-8無BOM的編碼保存。【不要用windows系統自帶的記事本編輯php源碼,這個BOM就是記事本這些windows自帶的編輯器引入的。】