2013-02-13 4 views
2

관련 스레드를 모두 검색했는데 성공하지 못했습니다. 관련 답변도 환영합니다.sdcard에서 json 파일을 읽는 중 null 포인터 예외가 발생했습니다.

은 내가 .NewFolder 폴더 안에 SDCard에있는 .json 파일, 내가 파일의 데이터를 읽고 구문 분석, 타임 스탬프를 발견하고 타임 스탬프가 다른 경우를 재 작성 할 할 로 JSON 데이터를 가지고있다.

아래 코드는 내가 사용하는 코드이며 aBuffer의 데이터와 jdata_fromfile의 값을 얻지 만 파싱하는 동안 nullPointerException이 발생합니다. 내가 메모장에서 파일을 열 때 해당

myFile = new File(Environment.getExternalStorageDirectory() + "/.NewFolder/" +str.get(i)); 
if(myFile.exists()) 
{ 
    FileInputStream fIn = new FileInputStream(myFile); 
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn)); 
    String aDataRow = ""; 
    String aBuffer = ""; 
    while ((aDataRow = myReader.readLine()) != null) 
    { 
     aBuffer += aDataRow; 
    } 
    myReader.close(); 
    jdata_fromfile = new JSONObject(aBuffer); 

    String timestamp_fromfile = jdata_fromfile.getString(str_timestamp.get(i)); 
    timestamp_val_fromfile.add(timestamp_fromfile); 
} 
else 
{ 
    myFile.createNewFile(); 
    writedate_tofile(value_json.toString()); 
    timestamp_val_fromfile.add("xxx"); 
} 

그리고

는,이 데이터의 일부를 보여주는 한 줄에 모든이며, 내가 http://jsonformatter.curiousconcept.com

에 복사 할 때 전체 데이터를 얻을 유효한 json. 내가 할 때 메모장에서 나머지 데이터를 볼 수 있습니다 - Ctrl + End 및 Enter 키를 누릅니다.

왜이 부분입니까? 어디서 잘못됩니까? 사전에

02-13 18:44:52.109: E/aBuffer value(7134): is {"Status":{"Itemlist":[{"x - Drinks":{"Details":[{"type":"","image":"","price":"","name":"Minerals"},{"type":"","image":"","price":"","name":"Milk Shakes"},{"type":"","image":"","price":"","name":"Milk"},{"type":"","image":"","price":"","name":"Mineral Water"},{"type":"","image":"","price":"","name":"Hot Beverages"},{"type":"","image":"","price":"","name":"Chocolate Muffin and Ice Cream"}, ........................................................................{"type":"","image":"","price":"","name":"Blu 
02-13 18:44:52.189: E/jdata_fromfile value(7134): is {"x Time_stamp":"2013-02-12 12:30:00","Status":{"Itemlist":[{"x - Sides":{"Details":[{"type":"","image":"","name":"Onion Rings (6)","price":""},{"type":"","image":"","name":"Sausage Portion (Minimum 2 per portion)","price":""},.................................................................................................................... ,"x - Burgers":{"Details":[{"type":"","image":"","name":"x 5oz Burger","price":""},{"type":"","image":"","name":"x 5oz Cheese Burger","price":""},{"type":"","image":"","name":"x 5oz with Bacon and Cheese","price":""},{"type":"","imag 
02-13 18:44:52.189: E/Reading from internal file - Exception e(7134): java.lang.NullPointerException 

감사 로그 -

내 오류입니다.

+1

어떤 줄에서 NullPointerException을 얻습니까? 스택 추적 만 게시하면됩니다. – svennergr

+0

위의 코드를 try-catch에서 사용하고 있는데, 02-13 18 : 33 : 15.909 : E/내부 파일에서 읽음 - 예외 e (6632) : java.lang.NullPointerException – VIGNESH

+1

전체 스택 추적 게시 도망. – svennergr

답변

1

위의 코드에 무엇이 잘못되었지만 다른 JSON 라이브러리를 사용하는 해결책이 있습니까?

다음 안드로이드 응용 프로그램 중 하나에서 다음 코드를 사용하고 있으며, 안드로이드 파일 시스템에서 json 파일을 읽을 때 완벽하게 작동합니다. Android의 JSON 라이브러리를 사용하는 대신 json-simple.jar에서 http://code.google.com/p/json-simple/

Android 프로젝트의 libs 폴더에 위의 jar 파일을 넣었습니다. 또한 파일 .Manifest에 다음과 같이 설정하십시오.

다음 코드를 별도의 스레드에 넣습니다.

JSONParser parser = new JSONParser(); 
try { 
    String PATH = Environment.getExternalStorageDirectory() + "/Download/list.json"; 
    Object object = parser.parse(new FileReader(PATH));    
    JSONObject jsonObject = (JSONObject) object; 
    //Use JSONArray instead of JSONObject if json file contains array of JSONs 
    // 
    // Do anything with jsonObject 
    // 
} catch(Exception e) { 
    // TODO: handle exception 
} 

은 여기 내 list.json 파일 위치 /mnt/sdcard/Download이다.

참조 용 here은 위의 라이브러리를 간단한 java 프로젝트에서 사용하는 예입니다.

관련 문제