Passa attraverso l’Elenco oggetti JSON

Sto restituendo una lista da un webservice come elenco di oggetti JSON. Sto cercando di utilizzare un ciclo for per scorrere l’elenco e acquisire i valori dalle proprietà. Questo è un esempio del ritorno JSON:

{"d":[{"__type":"FluentWeb.DTO.EmployeeOrder", "EmployeeName":"Janet Leverling", "EmployeeTitle":"Sales Representative", "RequiredDate":"\/Date(839224800000)\/", "OrderedProducts":null}]} 

Quindi sto cercando di estrarre il contenuto usando qualcosa del genere:

 function PrintResults(result) { for (var i = 0; i < result.length; i++) { alert(result.employeename); } 

Come dovrebbe essere fatto?

ha avuto lo stesso problema oggi, il tuo argomento mi ha aiutato così ecco la soluzione;)

  alert(result.d[0].EmployeeTitle); 

Stai attento, d è la lista.

 for (var i = 0; i < result.d.length; i++) { alert(result.d[i].employeename); } 

È chiusa! Prova questo:

 for (var prop in result) { if (result.hasOwnProperty(prop)) { alert(result[prop]); } } 

Aggiornare:

Se il tuo risultato è veramente un array di un object, allora potresti dover fare questo:

 for (var prop in result[0]) { if (result[0].hasOwnProperty(prop)) { alert(result[0][prop]); } } 

Oppure se desideri eseguire il ciclo di ogni risultato dell’array se ce ne sono altri, prova:

 for (var i = 0; i < results.length; i++) { for (var prop in result[i]) { if (result[i].hasOwnProperty(prop)) { alert(result[i][prop]); } } } 

Ecco qui:

 success: function(data) { $.each(data, function(i, item){ alert("Mine is " + i + "|" + item.title + "|" + item.key); }); } 

Esempio di testo JSON:

 {"title": "camp crowhouse", "key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"} 

Dato che stai usando jQuery, potresti anche usare ogni metodo … Inoltre, sembra che tutto sia un valore della proprietà ‘d’ in questo object JS [Notazione].

 $.each(result.d,function(i) { // In case there are several values in the array 'd' $.each(this,function(j) { // Apparently doesn't work... alert(this.EmployeeName); // What about this? alert(result.d[i][j]['EmployeeName']); // Or this? alert(result.d[i][j].EmployeeName); }); }); 

Questo dovrebbe funzionare se no, allora forse puoi darci un esempio più lungo del JSON.

Modifica: se nessuna di queste cose funziona, sto iniziando a pensare che potrebbe esserci qualcosa di sbagliato nella syntax del tuo JSON.

 var d = $.parseJSON(result.d); for(var i =0;i 

Questo funzionerà!

 $(document).ready(function () { $.ajax( { type: 'POST', url: "/Home/MethodName", success: function (data) { //data is the string that the method returns in a json format, but in string var jsonData = JSON.parse(data); //This converts the string to json for (var i = 0; i < jsonData.length; i++) //The json object has lenght { var object = jsonData[i]; //You are in the current object $('#olListId').append('
  • La cosa principale a riguardo è l’utilizzo della proprietà esattamente uguale all’attributo della coppia chiave-valore JSON.

    Ho la seguente chiamata:

     $('#select_box_id').change(function() { var action = $('#my_form').attr('action'); $.get(action,{},function(response){ $.each(response.result,function(i) { alert("key is: " + i + ", val is: " + response.result[i]); }); }, 'json'); }); 

    La struttura che ritorna dal server assomiglia a:

     {"result":{"1":"waterskiing","2":"canoeing","18":"windsurfing"}}