我在android中使用Volley库从我的服务器获取JsonObject。
我已经用php
在服务器中创建了正确的json但是当我从服务器获取json时会出现一个奇怪的问题
我在php中使用json_encode来生成json
我不知道在json面前这些额外的角色是什么?
你知道如何解决这个问题吗?这是我在android中的错误
07-18 20:40:49.151:W / System.err(11636):com.android.volley.ParseError:org.json.JSONException:Valueï»?类型java.lang.String无法转换为JSONObject
提前致谢
答案 0 :(得分:0)
我会将此作为评论发布,但我想发布链接中的相关代码。如果它有效,真棒,如果不让我知道,我将删除它(因为我还没有测试过它)。
来自Skip BOM
"问题是您的UTF-8字符串以字节顺序标记字符(BOM)' 0xfeff'开头。我们应该修复我们的JSON解析器,如果它存在则跳过这个字符。
作为一种解决方法,当您从InputStream转到Reader时,可以使用此代码去除BOM。"
public Reader inputStreamToReader(InputStream in) throws IOException {
in.mark(3);
int byte1 = in.read();
int byte2 = in.read();
if (byte1 == 0xFF && byte2 == 0xFE) {
return new InputStreamReader(in, "UTF-16LE");
} else if (byte1 == 0xFF && byte2 == 0xFF) {
return new InputStreamReader(in, "UTF-16BE");
} else {
int byte3 = in.read();
if (byte1 == 0xEF && byte2 == 0xBB && byte3 == 0xBF) {
return new InputStreamReader(in, "UTF-8");
} else {
in.reset();
return new InputStreamReader(in);
}
}
}
"或者您可以从文件中删除字节顺序标记!"