2012-12-03 4 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); 

나는 EOF 예외가 발생합니다. 리소스의 문자열이 파일에서 복사되었으므로 동일해야합니다. 이 예외는 개체 뒤에 추가 문자가 있지만 아무 것도 표시되지 않는 경우에 발생할 수 있다고 읽었습니다. 여기서 무엇이 잘못 될지에 대한 아이디어가 있습니까?

+1

실제 스택 추적을 게시 하시겠습니까? 또는 디버거를 사용하여 두 문자열 사이에 실제 차이점이 무엇인지 확인하십시오. –

답변

1

getString()은 모든 특수 문자를 표시하지 않습니다. 그들을 탈출해야 할 수도 있습니다.

누락 된 문자를 참조 R.string.NewFileData의 내용을 로그인 후

+0

예, 저는 \ – clavio

0

방법을 시도 사용에 대한 (제거 된 문자 앞에 "\"를 넣어)

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

대신 strings.xml에서 그들을 탈출 String Json = this.getString(R.string.NewFileData);

원인 \r\n

readline에 의해 분석 단락 메시지를 넣으면 이 IOException이됩니다.

관련 문제