2017-05-23 2 views
0

java 용 json 파서를 만들고 있습니다. 나는 문자열로 JSON을받을 후 나는 모든 키 값 여기java JsonObject를 구문 분석하는 중 오류가 발생했습니다.

을 얻으려고 내 JSON 문자열은

{ "Message":{"field": [ {"bit":2,"name":"AAA"}, {"bit":3,"name":"BBB"}]}} 

그리고 여기 내 파서입니다 :

   JSONObject jObject = new JSONObject(result); //result contains the json     
       JSONArray info = jObject.getJSONArray("field"); 
       for (int i = 0 ; i < info.length(); i++) { 
        JSONObject obj = info.getJSONObject(i); 
        Iterator<String> keys = obj.keys(); 
        while (keys.hasNext()) { //I use key - value cause the json can change 
         String key = keys.next(); 
         System.out.println("Key: " + key + "\tValue: " + obj.get(key)); 
        } 
       } 

그러나 매번 그 전 내가 얻을 코드를 실행하십시오 :

Error parsing json org.json.JSONException: JSONObject["field"] not found. 

그리고 내가 생각하기에 그 필드는 JsonArray ... 내가 틀렸어?

당신은 너무 깊이 당신의 jObject에서 field을 얻고 싶었다 한 수준이다

답변

2

시간 내 주셔서 감사합니다. 당신은 할 필요가 : 당신은 JSONArrayfield에서 얻을받을 필요가

JSONObject jObject = new JSONObject(result); 
JSONObject jMsg = jObject.getJSONObject("Message");    
JSONArray info = jMsg.getJSONArray("field"); 
2

JSONObjctMessage

String result = "{ \"Message\":{\"field\": [ {\"bit\":2,\"name\":\"AAA\"}, {\"bit\":3,\"name\":\"BBB\"}]}}"; 
JSONObject jObject = new JSONObject(result).getJSONObject("Message"); //result contains the json 
JSONArray info = jObject.getJSONArray("field"); 
for (int i = 0 ; i < info.length(); i++) { 
    JSONObject obj = info.getJSONObject(i); 
    Iterator<String> keys = obj.keys(); 
    while (keys.hasNext()) { //I use key - value cause the json can change 
     String key = keys.next(); 
     System.out.println("Key: " + key + "\tValue: " + obj.get(key)); 
    } 
} 

출력 :

Key: name Value: AAA 
Key: bit Value: 2 
Key: name Value: BBB 
Key: bit Value: 3 
0

이 시도 :

 String result = "{ \"Message\":{\"field\": [ {\"bit\":2,\"name\":\"AAA\"}, {\"bit\":3,\"name\":\"BBB\"}]}}"; 

    JSONObject jObject = new JSONObject(result); //result contains the json 
    JSONArray info = jObject.getJSONObject("Message").getJSONArray("field"); 
    for (int i = 0 ; i < info.length(); i++) { 
     JSONObject obj = info.getJSONObject(i); 
     Iterator<String> keys = obj.keys(); 
     while (keys.hasNext()) { //I use key - value cause the json can change 
      String key = keys.next(); 
      System.out.println("Key: " + key + "\tValue: " + obj.get(key)); 
     } 
    } 
관련 문제