2014-06-12 3 views
0

추가 처리를 위해 JSON 파일에서 배열로 값을 읽으려고합니다. 나는 같은 JSON - 스마트 1.2.0 라이브러리를 사용하고 있습니다. 몇 가지 제한 사항으로 인해 2.0 버전을 사용할 수 없습니다.json-smart를 사용하여 JSON 파일 읽기

다음과 같은 예외가 발생합니다.

java.lang.ClassCastException: net.minidev.json.JSONArray cannot be cast to net.minidev.json.JSONObject 

JSONObject 대신 JSONArray를 사용해 보았습니다. 내가 여기서 잘못하고있는 것? json 콘텐츠를 읽는 올바른 방법입니까?

아래는 자바 코드입니다.

JSONObject json = (JSONObject) JSONValue.parseWithException(browsers); 
JSONArray array = (JSONArray) json.get("friends"); 

for (int i = 0; i < array.size(); i++) { 
    JSONObject cap = (JSONObject) array.get(i); 
    String first = (String) cap.get("name"); 
    System.out.println(first); 
} 

아래는 json 파일 내용입니다. 더 요소 루프 대신 root.get(0)에 대한 추가 할 수있는 경우

JSONArray root = (JSONArray) JSONValue.parseWithException(json); 
JSONObject rootObj = (JSONObject) root.get(0); 
JSONArray array = (JSONArray) rootObj.get("friends"); 

for (int i = 0; i < array.size(); i++) { 
    JSONObject cap = (JSONObject) array.get(i); 
    String first = (String) cap.get("name"); 
    System.out.println(first); 
} 

:

[ 
    { 
    "friends": [ 
     { 
     "id": 0, 
     "name": "test1" 
     }, 
     { 
     "id": 1, 
     "name": "test2" 
     } 
    ] 
    } 
] 

답변

2

귀하의 JSON 당신이 그런 식으로 구문 분석해야하므로 하나 개의 객체 요소가 배열이 포함되어 있습니다.

+0

그게 효과가 있습니다. 감사. – Purus

+0

"friends"라는 루트가없는 json 파일을 가질 수 있습니까? – Purus

+0

예, 다음과 같은 JSON을 가질 수 있습니다 :'[{ "id": 0, "name": "test1"}, { "id": 1, "name": "test2"}]' – cy3er