2013-06-17 5 views
0
[ 

    { 
     "description": "My home", 
     "name": "Sweet Home", 
     "point": { 
      "lat": 22.890976, 
      "long": 90.459097 
     }, 
     "type": 1, 
     "cid": "5319197376176516414" 
    } 

이것은 정보를 파싱하기위한 json 파일입니다. 다음은 name과 lng를 파싱하는 코드입니다.Android : Json Parsing 오류 표시

BufferedReader jsonReader = new BufferedReader(new InputStreamReader(this.getResources().openRawResource(R.raw.map))); 
     StringBuilder jsonBuilder = new StringBuilder(); 
     try { 
      for (String line = null; (line = jsonReader.readLine()) != null;) { 
       jsonBuilder.append(line).append("\n"); 
      } 

      JSONTokener tokener = new JSONTokener(jsonBuilder.toString()); 
      JSONArray jsonArray = new JSONArray(tokener); 

       JSONObject jsonObject = jsonArray.getJSONObject(0); 

       String title = jsonObject.getString("name"); 
       String lhg = jsonObject.getJSONObject("point").getString("lng"); 
} catch (FileNotFoundException e) { 
      Log.e("jsonFile", "file not found"); 
     } catch (IOException e) { 
      Log.e("jsonFile", "ioerror"); 
     } catch (JSONException e) { 
      Log.e("jsonFile", "error while parsing json"); 
     } 
    } 

} 

쇼는 나에게 예외 error while parsing json입니다. 어떻게 해결할 수 있을까요? 내 문제는 뭐니?

+2

귀하의 JSO N이 유효하지 않습니다. – NINCOMPOOP

+2

@NewIdiot이 맞습니다. 누락 된 대괄호가 있습니다. 아니면 복사/붙여 넣기 오류입니까? – fge

+1

커스텀 예외 메시지가 아닌'Log.e ("jsonFile", e.getMessage()); – NINCOMPOOP

답변

5

하여 JSON 객체의 "포인트"결코 "LNG"라는 속성을 포함하지 않기 때문에

String lhg = jsonObject.getJSONObject("point").getString("lng") 

이 포함 않는 한

"point": { 
      "lat": 22.890976, 
      "long": 90.459097 
     }, 

그래서 코드가해야 경도를 가져올 수라는 이름의 "긴" 다음과 같이 :

String lhg = jsonObject.getJSONObject("point").getString("long") 
+0

또한 위도와 경도는 이유 때문에 문자열로 표현되지 않는다 (실제로는 숫자 좌표계의 벡터이다) –

1
String lhg = jsonObject.getJSONObject("point").getString("lng") use "long" instead of lng.