2013-09-26 14 views
15

Próbuję pętli ciągu następnych JSONPętla Java nad tablicą Json?

{ 
    "dataArray": [{ 
     "A": "a", 
     "B": "b", 
     "C": "c" 
    }, { 
     "A": "a1", 
     "B": "b2", 
     "C": "c3" 
    }] 
} 

co mam do tej pory:

JSONObject jsonObj = new JSONObject(json.get("msg").toString()); 

for (int i = 0; i < jsonObj.length(); i++) { 
    JSONObject c = jsonObj.getJSONObject("dataArray"); 

    String A = c.getString("A"); 
    String B = c.getString("B"); 
    String C = c.getString("C"); 

} 

jakieś pomysły?

Odpowiedz

28

W kodzie element dataArray jest tablicą obiektów JSON, a nie samego obiektu JSON. Elementy A, B i C są częścią obiektów JSON wewnątrz macierzy JSON dataArray.

Trzeba iteracji tablicy

public static void main(String[] args) throws Exception { 
    String jsonStr = "{   \"dataArray\": [{    \"A\": \"a\",    \"B\": \"b\",    \"C\": \"c\"   }, {    \"A\": \"a1\",    \"B\": \"b2\",    \"C\": \"c3\"   }]  }"; 

    JSONObject jsonObj = new JSONObject(jsonStr); 

    JSONArray c = jsonObj.getJSONArray("dataArray"); 
    for (int i = 0 ; i < c.length(); i++) { 
     JSONObject obj = c.getJSONObject(i); 
     String A = obj.getString("A"); 
     String B = obj.getString("B"); 
     String C = obj.getString("C"); 
     System.out.println(A + " " + B + " " + C); 
    } 
} 

wydruki

a b c 
a1 b2 c3 

ja nie wiem, gdzie msg pochodzi z fragmentu kodu.