2014-02-04 2 views
1

вот пример строки JSON:Синтаксический объект JSON в JQuery

[{"Description":"Administrators can do everything on the site","Id":"381ede0e-3bc1-4d71-83d8-bbb62a3b8aaa","Name":"Admin"},{"Description":"Technical users with limited permissions a","Id":"7a632af6-214b-4a8e-a3f8-9c0aafae2645","Name":"Technical"}] 

здесь мой сценарий до сих пор:

//Get Users Roles: 
      $.getJSON('@Url.Action("GetAUsersRegisteredRoles")' + '/' + selectedUser, function (json) { 
       console.log('1:'); 
       console.log(json); 

       //Parse JSON 
       $.each(json, function() { 
        $.each(this, function (k, v) { 
         alert(v.Id + v.Name +v.Description); 
        }) 
       }); 
      }); 

Я знаю, что я делаю что-то неправильно с тем, как Я разбираю его? Я уверен, что это что-то глупое.

Вот вид массива JSON в консоли: enter image description here

Когда я запускаю его в браузере мое предупреждение всплывающее окно выходит 6 раз и говорит NaN

Я посмотрел на: Link, который помог мне добирайся до того места, где я сейчас.

ответ

4

Может быть, вам не нужен второй цикл

$.each(json, function (k, v) { 
    alert(v.Id + v.Name + v.Description); 
}); 
+0

О порядке я вижу. каждый из них уже разбивает каждый элемент. Мне нужно только прорваться через вспомогательные элементы. – Zapnologica

3

Ваш JSON массив объектов:

[ 
    { 
     "Description": "Administrators can do everything on the site", 
     "Id": "381ede0e-3bc1-4d71-83d8-bbb62a3b8aaa", 
     "Name": "Admin" 
    }, 
    { 
     "Description": "Technical users with limited permissions a", 
     "Id": "7a632af6-214b-4a8e-a3f8-9c0aafae2645", 
     "Name": "Technical" 
    } 
] 

Вам только нужно перебрать верхнего уровня:

$.each(json, function (k, v) { 
    console.log(v.Id, v.Name, v.Description); 
}); 

PS: это часто помогает, если вы смотрите на довольно отпечатанной JSON ,

1

Вы перечисляя элементы в списке, то свойства каждого элемента. Одной петли должно быть достаточно:

$.each(json, function() { 
    alert(this.Id + this.Name +this.Description); 
}); 
1

Это прекрасно. Просто оберните this с $, чтобы присвоить его как $ (this).

Вот пример:

var json = [ 
    { 
     "Description":"Administrators can do everything on the site", 
     "Id":"381ede0e-3bc1-4d71-83d8-bbb62a3b8aaa", 
     "Name":"Admin" 
    }, 
    { 
     "Description":"Technical users with limited permissions a", 
     "Id":"7a632af6-214b-4a8e-a3f8-9c0aafae2645", 
     "Name":"Technical" 
    } 
]; 

$.each(json, function() { 
    $.each($(this), function (k, v) { // this ==> $(this) in this line 
     alert(v.Id + v.Name +v.Description); 
    }) 
}); 

Jsfiddle: http://jsfiddle.net/ashishanexpert/xL7jm/

или не делают вторую петлю, потому что у вас есть ссылка на весь объект в только в первом цикле. как:

$.each(json, function (k, v) { 
    // Here v is that object each time of the loop 
    alert(v.Id + v.Name +v.Description); 
}); 

Jsfiddle Демо: http://jsfiddle.net/ashishanexpert/xL7jm/1/

Смежные вопросы