从资源加载时,GSON会出现EOF错误

时间:2012-12-03 19:43:46

标签: java android xml json gson

我正在尝试使用GSON将Json字符串转换为对象。当我从这样的文件中加载字符串时:

File f = new File(Environment.getExternalStorageDirectory()
            + File.separator + "jsonTest");
    BufferedReader br = new BufferedReader(new FileReader(f));
    String Json = br.readLine();
    br.close();
    Gson gson = new Gson();
    dreFieldArray = gson.fromJson(Json, DreField[].class);

工作正常。但是,如果我尝试使用字符串资源而不是这样:

String Json = this.getString(R.string.NewFileData);
Gson gson = new Gson();
    dreFieldArray = gson.fromJson(Json, DreField[].class);

我得到了一个EOFexception。资源中的字符串是从文件中复制的,因此它应该是相同的。我读到如果对象后面有额外的字符会发生这种异常,但我没有看到任何。关于这里出了什么问题的任何想法?

2 个答案:

答案 0 :(得分:1)

getString()不会显示所有特殊字符。你可能不得不逃避它们。

记录R.string.NewFileData的内容,查看丢失的字符,然后在strings.xml中删除它们(在删除的字符前加上“\”)

答案 1 :(得分:0)

尝试使用

String Json= "{\"userName\":\"hello\",\"userId\":123}"

而不是String Json = this.getString(R.string.NewFileData);

引用\r\n

的readline分析段落

如果您将e.printStackTrace()的消息IOException放得更有帮助