Цикл по списку объектов JSON - PullRequest
59 голосов
/ 29 апреля 2009

Я возвращаю 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 ]

67 голосов
/ 29 апреля 2009

Будьте осторожны, d - это список.

for (var i = 0; i < result.d.length; i++) { 
    alert(result.d[i].employeename);
}
52 голосов
/ 08 мая 2009

была та же проблема сегодня, ваша тема помогла мне, так что здесь идет решение;)

 alert(result.d[0].EmployeeTitle);
18 голосов
/ 29 апреля 2009

Это близко! Попробуйте это:

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]);
        }
    }
}
15 голосов
/ 18 ноября 2010

Вот оно:

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

Образец текста в формате JSON:

{"title": "camp crowhouse", 
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"}
8 голосов
/ 29 апреля 2009

Поскольку вы используете jQuery, вы также можете использовать каждый метод ... Кроме того, кажется, что все является значением свойства 'd' в этом объекте JS [Notation].

$.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.

Редактировать: Если ничего из этого не работает, я начинаю думать, что может быть что-то не так с синтаксисом вашего JSON.

6 голосов
/ 20 сентября 2012
var d = $.parseJSON(result.d);
for(var i =0;i<d.length;i++){
    alert(d[i].EmployeeName);
}
2 голосов
/ 14 мая 2016

Это будет работать!

$(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.

1 голос
/ 23 ноября 2010

У меня есть следующий звонок:

$('#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"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...