JsonObject有一些额外的角色

时间:2014-07-18 16:11:43

标签: php android json android-volley

我在android中使用Volley库从我的服务器获取JsonObject。

我已经用php

在服务器中创建了正确的json

但是当我从服务器获取json时会出现一个奇怪的问题

enter image description here

我在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

提前致谢

1 个答案:

答案 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);
      }
    }
  }

"或者您可以从文件中删除字节顺序标记!"