用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异常。字符串是从文件中复制的,所以应该是完全相同的,异常是在对象之后出现多余的字符串,不知道该怎么解决?谢谢帮忙
getString()
不能显示所有的特殊字符,要尽量不用,记录一下R.string.NewFileData
的内容,看哪个字符丢失了,然后在strings.xml
中避开那些字符,在移除字符前加上\
。
将
String Json = this.getString(R.string.NewFileData);
换为如下调试一下:
String Json= "{\"userName\":\"hello\",\"userId\":123}";
readLine以\r\n解析段,可能是尾部原因造成
你说一样的,还是以输出的为准。另外,报的错误,最好原样打印出来
EOF表示End of the file,为啥不提供更健全的Log错误输出呢
务必打印出IOException的e.printStackTrace();