2012-12-03 35 views
0

我想使用GSON將Json字符串轉換爲對象。當我從這樣的文件加載字符串:GSON從資源加載時出現EOF錯誤

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。資源中的字符串是從文件中複製的,所以它應該是相同的。我發現如果在對象後面有多餘的字符,就會發生這種異常,但我沒有看到任何異常。關於這裏出了什麼問題的任何想法?

+1

發佈實際的堆棧跟蹤?或者使用調試器並查看兩個'String'之間的實際區別。 –

回答

1

getString()將不會顯示所有特殊字符。你可能不得不逃脫它們。

日誌R.string.NewFileData的內容,查看丟失的字符,然後在strings.xml逃避他們(把「\」中刪除的字符前)

+0

是的,我需要使用\ – clavio

0

怎麼樣嘗試使用

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

代替的String Json = this.getString(R.string.NewFileData);

原因由\r\n

readline的分析段如果你把消息e.printStackTrace()IOException會更有幫助