ma la struttura è fissa? Perché secondo me c'è un livello di troppo. Se la puoi cambiare ti consiglio una delle due:
codice:
{
"id1":
{"rank":0.36787944117144233,
"tipo":"Maurolico",
"H":"Alice",
"K":"Alice"},
"id2":
{"rank":0.36787944117144233,
"tipo":"Papalina",
"H":"Alice",
"K":"Alice"},
"id3":
{"rank":0.36787944117144233,
"tipo":"Lacerto",
"H":"Alice",
"K":"Alice"},
"id4":
{"rank":0.36787944117144233,
"tipo":"Anguilla",
"H":"Alice",
"K":"Alice"}
}
Oppure:
codice:
[
{
"id" : "id1",
"rank":0.36787944117144233,
"tipo":"Maurolico",
"H":"Alice",
"K":"Alice"},
{
"id" : "id2",
"rank":0.36787944117144233,
"tipo":"Papalina",
"H":"Alice",
"K":"Alice"},
{
"id" : "id3",
"rank":0.36787944117144233,
"tipo":"Lacerto",
"H":"Alice",
"K":"Alice"},
{
"id" : "id3",
"rank":0.36787944117144233,
"tipo":"Anguilla",
"H":"Alice",
"K":"Alice"}
]
In ogni caso, per ciclare su di una struttura di dati si fa in questo modo:
Codice PHP:
//Metti di avere un oggetto:
var obj = {
"key1" : "Val1",
"key2" : "Val2",
"key3" : "Val3",
"key4" : "Val4",
"key5" : "Val5"
};
//Tu puoi ciclare per chiave valore con un for
for(var key in obj){ //Si legge "Per ogni chiave 'key' nell'Oggetto 'obj' fai"
var val = obj[key];
//Ora in key hai la chiave ed in val hai il valore, il ciclo analizza tutto l'oggetto
}
//Per un array il discorso è più semplice
var arr = [1,2,3,4,5,6,7,8,9];
//Sempre usando un for
for(var i = 0; i < arr.length; i++){ //Si legge "Data una variabile 'i' uguale a 0, fintanto che 'i' è minore della lunghezza dell'array 'arr', esegui il seguente codice incrementando i di uno ad ogni ciclo
var val = arr[i];
//Ora in val c'è il valore corrispondente all'indice i
}
A questo punto prendendo in esame la tua struttura JSON:
Codice PHP:
var jsonObj = eval(jsonStr); //Metti che in jsonStr c'è la stringa JSON
//Esternamente è un array quindi:
for(var i = 0; i < jsonObj.length; i++){
var singleObj = jsonObj[i];
//Ora ho in singleObj l'oggetto esterno, non so a priori la chiave che avrà l'oggetto quindi
for(var id in singleObj){
var obj = singleObj[id];
var rank = obj.rank;
var tipo = obj.tipo;
var H = obj.H;
var K = obj.K;
//Ora ho tutti i valori e posso agire di consequenza.
}
}
P.S. chiaramente se cambi la struttura del JSON devi cambiare lo script di consequenza