2 annbnncnnd AnnBnnCnnD 于 2012.12.04 11:10 提问

加载GSON的时候出现EOF错误

用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异常。字符串是从文件中复制的,所以应该是完全相同的,异常是在对象之后出现多余的字符串,不知道该怎么解决?谢谢帮忙

2个回答

Kill_it
Kill_it   2012.12.04 11:39

getString()不能显示所有的特殊字符,要尽量不用,记录一下R.string.NewFileData的内容,看哪个字符丢失了,然后在strings.xml中避开那些字符,在移除字符前加上\

franzhong
franzhong   2012.12.04 11:46


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();

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!