Цикл по списку объектов JSON
Я возвращаю List из веб-сервиса в виде списка объектов JSON. Я пытаюсь использовать цикл for для итерации по списку и захвата значений из свойств. Это пример возвращаемого JSON:
{"d":[{"__type":"FluentWeb.DTO.EmployeeOrder",
"EmployeeName":"Janet Leverling",
"EmployeeTitle":"Sales Representative",
"RequiredDate":"/Date(839224800000)/",
"OrderedProducts":null}]}
Так я пытаюсь извлечь содержимое, используя что-то вроде этого:
function PrintResults(result) {
for (var i = 0; i < result.length; i++) {
alert(result.employeename);
}
Как это должно быть сделано?
8 ответов:
была такая же проблема сегодня, ваша тема помогла мне так вот идет решение;)
alert(result.d[0].EmployeeTitle);
будьте осторожны
d
список.for (var i = 0; i < result.d.length; i++) { alert(result.d[i].employeename); }
Это близко! Попробуйте это:
for (var prop in result) { if (result.hasOwnProperty(prop)) { alert(result[prop]); } }
обновление:
Если ваш результат действительно является массивом одного объекта, то вам, возможно, придется сделать это:
for (var prop in result[0]) { if (result[0].hasOwnProperty(prop)) { alert(result[0][prop]); } }
или если вы хотите перебрать каждый результат в массиве, если их больше, попробуйте:
for (var i = 0; i < results.length; i++) { for (var prop in result[i]) { if (result[i].hasOwnProperty(prop)) { alert(result[i][prop]); } } }
вот это:
success: function(data) { $.each(data, function(i, item){ alert("Mine is " + i + "|" + item.title + "|" + item.key); }); }
образец текста JSON:
{"title": "camp crowhouse", "key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"}
поскольку вы используете jQuery, вы можете также использовать каждый метод... Кроме того, кажется, что все является значением свойства 'd' в этом объекте JS [обозначение].
$.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); }); });
Это должно сработать. если нет, то, возможно, вы можете дать нам более длинный пример JSON.
Edit: если ничего из этого не работает, то я начинаю думать, что может быть что-то не так с синтаксисом вашего JSON.
Это будет работать!
$(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('<li class="someclass>' + object.Atributte + '</li>'); //now you access the property. } /* JSON EXAMPLE [{ "Atributte": "value" }, { "Atributte": "value" }, { "Atributte": "value" }] */ } }); });
главное в этом-использовать свойство точно так же, как атрибут пары ключ-значение JSON.
у меня есть следующий вызов:
$('#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'); });
структура, возвращающаяся с сервера, выглядит так:
{"result":{"1":"waterskiing","2":"canoeing","18":"windsurfing"}}