2012-05-05 16 views
23

Ho un JSON uscita simile al seguente:JQuery di analisi JSON serie

["City1","City2","City3"] 

voglio ottenere ciascuno dei nomi di città, come posso fare questo?

$.getJSON("url_with_json_here",function(json){ 

}); 

EDIT:

$.getJSON('url_here', function(data){ 
    $.each(data, function (index, value) { 
     $('#results').append('<p>'+value+'</p>'); 
     console.log(value); 
    }); 
}); 

È possibile che questo non sembra funzionare, nessun valore vengono emessi.

+0

Stai usando 'g etJSON() 'per recuperare il JSON? Perché allora dovrebbe già essere recuperato. Difficile da aiutare senza esempi di codice. Sei nuovo che non hai mai scritto alcun codice? – kapa

+0

vedere la mia modifica, sono solo confuso su come recuperare gli elementi dall'url –

risposta

44

getJSON() analizza anche il JSON per te dopo il recupero, quindi da quel momento in poi, stai lavorando con un semplice array Javascript ([] segna un array in JSON). La documentazione contiene anche esempi su come gestire i dati recuperati.

È possibile ottenere tutti i valori in un array using a for loop:

$.getJSON("url_with_json_here", function(data){ 
    for (var i = 0, len = data.length; i < len; i++) { 
     console.log(data[i]); 
    } 
}); 

Controlla la tua console per vedere l'uscita (Chrome, Firefox/Firebug, IE).

jQuery prevede anche $.each() per iterazioni, quindi si potrebbe anche fare questo:

$.getJSON("url_with_json_here", function(data){ 
    $.each(data, function (index, value) { 
     console.log(value); 
    }); 
}); 
+0

grazie, vedere la mia modifica –

+0

Assicurarsi che il JSON stia arrivando :). Prova 'console.log (dati);'. L'esempio che hai modificato nella tua domanda dovrebbe funzionare. – kapa

+0

@ user1083813 Creata una [piccola simulazione] (http://jsfiddle.net/wTCAM/1/) per te che dimostra che il tuo codice funziona. – kapa

29

Utilizzare la parseJSON method:

var json = '["City1","City2","City3"]'; 
var arr = $.parseJSON(json); 

Poi si ha una matrice con i nomi delle città.

+0

grande grazie, quindi se sto usando il precedente con il metodo $ .getJSON, questo codice andrà nella funzione eseguita dopo aver ottenuto con successo il JSON da un URL? –

+1

@ user1083813: Se si sta recuperando JSON utilizzando AJAX, è necessario specificare che il tipo di dati è JSON. Quindi verrà analizzato automaticamente e il callback di successo riceverà un oggetto o una matrice anziché una stringa. Se si utilizza il metodo 'getJSON', il tipo di dati viene impostato automaticamente su JSON, quindi non è necessario analizzare il risultato. – Guffa

+0

Questo è ciò di cui avevo bisogno. Ho già avuto la stringa JSON in sessione e non è stato necessario il recupero AJAX. Grazie. – zkent

0
var dataArray = []; 
var obj = jQuery.parseJSON(response); 
    for(key in obj) 
    dataArray.push([key.toString(), obj [key]]); 
}; 
+2

-1 per usare 'for..in' su un array. – kapa

7
var dataArray = []; 
var obj = jQuery.parseJSON(yourInput); 

$.each(obj, function (index, value) { 
    dataArray.push([value["yourID"].toString(), value["yourValue"] ]); 
}); 

questo mi aiuta molto :-)

0

con parse.JSON

var obj = jQuery.parseJSON('{ "name": "John" }'); 
alert(obj.name === "John"); 
+6

-1 La stessa risposta era già stata pubblicata più di un anno fa. – kapa