2014-07-18 2 views
0

런타임시 .json 파일을 읽고 필드를 변경해야합니다. 나는 다음과 같은 오류가.json 파일 읽기 - BOM 문제?

JSONObject jOb=null; 


     try { 
      jOb = new JSONObject(filePath); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     System.out.println(jOb.toString()); 
     try { 
      jOb.put("responseType", "TESTicles"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     System.out.println(""+jOb); 

을 : : 나는 그것을 읽을 때

문제는 "A 된 JSONObject 문자로 시작해야합니다 '{'1 [문자 2 라인 1]에서"

{ 
    "base":{  
    "sites":{ 
     "local":{ 
     "name":"siteA", 
     "datasource":{ 
... 
01 : 나는 '{'

여기 샘플 (내 JSON 파일의 시작 부분)의 내 파일로 시작하기 때문에 문제가 BOM 마커 것 같아요

파일을 읽으려면 BOM 아이콘을 제거해야하지만 파일을 읽지 않고 어떻게 할 수 있습니까? 그것에 대해

This, this 및 다른 많은 물건을,하지만 난 내 문제에 대한 해결책을 찾을 수 없습니다 :

은 내가 읽었습니다. 내가 무엇을 할 수 있을지?

+0

[this JSONObject] (http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject%28java.lang.String%29) API를 사용하고 있습니까? 파일 경로 생성자가 없습니다. – McDowell

답변

1

library defined at json.org을 사용한다고 가정 할 때 코드에서 수행하는 작업은 파일 이름을 JSON 문자열로 취급하고이를 JSON 객체로 해석하려고합니다.

InputStream foo = new FileInputStream(filePath); 
JSONTokener t = new JSONTokener(foo); 
JSONObject obj = new JSONObject(t); 
:

워드 프로세서를 읽고, 당신은 당신이 당신 된 JSONObject 생성자에 매개 변수로 패스 JSONTokener 생성자의 매개 변수, 같은 뭔가로 전달, 입력 스트림로 파일을 열어야합니다

참고 : 위 테스트 또는 컴파일되지 않았습니다.

+0

그건 나쁘지. 나는 그것을 고쳤다. 그러나, 나는 여전히 같은 오류가 있습니다. 편집 : 고정 – SaintLike