2016-04-16 13 views
0

Ich habe JSON-Code wie oben, als Antwort:Android Parse-JSON-Array von Array

"candidates": [ 
{ 
    "subtest1": "0.802138030529022", 
    "enrollment_timestamp": "1416850761" 
}, 
{ 
    "elizabeth": "0.802138030529022", 
    "enrollment_timestamp": "1417207485" 
}, 
{ 
    "elizabeth": "0.777253568172455", 
    "enrollment_timestamp": "1416518415" 
}, 
{ 
    "elizabeth": "0.777253568172455", 
    "enrollment_timestamp": "1416431816" 
} 
] 

Ich versuche Namen von candidates Array zu erhalten.

public void dataCheck(String text){ 
    System.out.println("JSON response:"); 
    System.out.println(text); 

    try { 
     JSONObject jsonRootObject = new JSONObject(text); 
     JSONArray jsonArray = jsonRootObject.optJSONArray("candidates"); 

     for(int i=0; i < jsonArray.length(); i++){ 
      JSONObject jsonObject = jsonArray.getJSONObject(i); 

      String subtest1 = jsonObject.optString("subtest1").toString(); 

     } 
    } catch (JSONException e){ 
     e.printStackTrace(); 
    } 

} 

Es ist schwierig, da diese Werte in einem Array aus einem Array und ohne Identifikator sind. Der Bezeichner ist der genaue Wert und konnte daher keine Variable in meinem Code definieren. Ich brauche nur den ersten Wert, wie subtest1 in diesem Beispiel.

+0

Ich sehe kein Array in einem Array. Ich sehe JSONObjects in einem JSONArray – ligi

+0

@ligi: Sorry, ich habe Kandidaten Attribute als andere Arrays interpretieren. – plaidshirt

+0

sollte es mit Ihrem Code sein. Gibt es eine Ausnahme? –

Antwort

1
// Get the keys in the first JSON object 
Iterator<?> keys = jsonObject.keys(); 
if (keys.hasNext()) { 
    // Get the key 
    String key = (String)keys.next(); 
    String objValue = jsonObject.getString(key); 
    ... 
} 
+0

Aber diese Variablennamen sind durch Antwort gegeben. Ich kann sie nicht programmatisch definieren. – plaidshirt

+0

Ich soll ‚subtest1‘, wie der Wert eines String erhalten. – plaidshirt

+0

Siehe meine aktualisierte Antwort. Zuerst alle Schlüssel holen. Wenn es einen Schlüssel gibt, erhalte den Wert dieses Schlüssels. Wenn Sie auch andere Schlüssel und Werte möchten, können Sie 'if' durch' while' ersetzen. – Exaqt