我正在尝试使用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。资源中的字符串是从文件中复制的,因此它应该是相同的。我读到如果对象后面有额外的字符会发生这种异常,但我没有看到任何。关于这里出了什么问题的任何想法?
答案 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
如果您将e.printStackTrace()
的消息IOException
放得更有帮助