2015-06-02 25 views
8

Come analizzerei un array come il seguente in Android?Analizza array JSON senza chiave in Android

[ 
5, 
10, 
15, 
20 
] 

Come si può vedere, non c'è una chiave definizione del campo, come altri array esempio, hanno, come questa:

{ 
"items": [ 
    5, 
    10, 
    15 
    ] 
} 

Per la seconda serie, che può facilmente fare un JSONObject e giusto utilizzare:

JSONArray itemArray = jsonObject.getJSONArray("items") 

Ma, come è ovvio, non esiste una chiave per il primo array. Quindi come si farebbe con questo? È persino possibile con le librerie Android standard?

risposta

11

Hai provato a farlo?

try { 
    // jsonString is a string variable that holds the JSON 
    JSONArray itemArray=new JSONArray(jsonString); 
    for (int i = 0; i < itemArray.length(); i++) { 
     int value=itemArray.getInt(i); 
     Log.e("json", i+"="+value); 
    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Questo non analizza il secondo file JSON? Mi scuso se la mia domanda è stata scritta in modo confuso. Voglio analizzare il primo file JSON, quello senza la chiave "items". Questo significherebbe che il mio 'JSONArray' sarebbe appena stato impostato sul file JSON che sto ottenendo? –

+1

Sì, questo analizza il secondo file JSON. Mi dispiace non aver capito la tua domanda. Per ottenere il primo JSONArray, dovresti fare qualcosa come 'JSONArray itemArray = new JSONArray (yourstringname);' dove 'yourstringname' è una variabile String che contiene il tuo file JSON (presumo che sia una stringa) e il resto sarà lo stesso. –

+1

Perfetto, l'ho appena provato e funziona come previsto. Se non ti dispiace, potresti modificare la tua risposta in modo che corrisponda alla domanda per futuri lettori/riferimento? Lo accetterò dopo. –

0

Considerate versione Foreach:

try { 
    JSONArray itemArray=jsonObject.getJSONArray("items"); 
    for (var item : itemArray) { 
     System.out.println(item); 
    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
0

È possibile passare la stringa di matrice al costruttore JSONArray in questo modo:

String itemsJson = "[5,10,15,20]"; 
JSONArray itemArray = new JSONArray(itemsJson); 

Nota: si dovrà aggiungere un try/catch o throws per il potenziale JSONException

0

Qui è possibile accedere direttamente ai dati nell'array json.

JSONArray itemArray = jsonObject.getJSONArray("items"); 

for(int i=0;i<itemarray.length;i++) 

{ 

int i = Integer.ParseInt(itemarray.get(i)); 

Log.i("Value is:::",""+i); 

}