2013-09-26 22 views
15

Sto cercando di ciclo nei successivi JSONCiclo Java su array Json?

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

quello che ho ottenuto finora:

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"); 

} 

Tutte le idee?

risposta

28

Nel codice l'elemento dataArray è un array di oggetti JSON, non un oggetto JSON stesso. Gli elementi A, B e C fanno parte degli oggetti JSON all'interno dell'array JSON dataArray.

È necessario iterare dell'array

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); 
    } 
} 

stampe

a b c 
a1 b2 c3 

non so dove msg proviene da in snippet di codice.