【问题标题】:GSON has an EOF error when loading from a resource从资源加载时 GSON 出现 EOF 错误
【发布时间】:2025-12-05 13:00:01
【问题描述】:

我正在尝试使用 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);

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

【问题讨论】:

  • 发布实际的堆栈跟踪?或者使用调试器,看看这两个Strings 之间的实际区别是什么。

标签: java android xml json gson


【解决方案1】:

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

记录R.string.NewFileData的内容,查看缺失的字符,然后在strings.xml中转义(在被移除的字符前加一个“\”)

【讨论】:

  • 是的,我需要使用 \ 逃脱
【解决方案2】:

试试看怎么样

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

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

\r\n引起readline分析段落

如果你把e.printStackTrace()IOException发消息会更有帮助

【讨论】:

    最近更新 更多