从服务器解析获取到的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;
}