Получение значений свойств объекта C # с помощью jQuery JSON

#c# #jquery #asp.net #ajax #json

#c# #jquery #asp.net #ajax #json

Вопрос:

Итак, у меня есть это:

 {"d":[{"__type":"Like","Id":345,"Sender":"JohnSmith","SourceId":338,"DateTime":"/Date(1321057654000)/","FromStream":true}]}
  

И это:

         function LikesSuccess(result, userContext, methodName) {
            for (var key in result) {
                alert(key.Sender);
            }
        }
  

JSON возвращает массив типа «Like» со свойствами, показанными выше.
Есть ли другой способ получить «JohnSmith» от отправителя? Потому что это возвращает undefined.

Спасибо.

Ответ №1:

Попробуйте

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

потому что ваш объект JSON имеет ключ d . >> jsfiddle

Комментарии:

1. Да, это решает проблему. Один вопрос, откуда взялось это «d»? Выполняет ASP.NET автоматически назначать его? Я нигде не указывал это в своем методе сценариев.

2. Это было изменение, добавленное в .NET 3.5 по соображениям безопасности. Смотрите encosia.com/a-breaking-change-between-versions-of-aspnet-ajax

3. @user1027620: Ознакомьтесь с этой статьей от Encosia о соображениях безопасности, стоящих за инкапсуляцией Microsoft возвращаемых объектов в свойство d.

Ответ №2:

используйте jquery

var obj = $.parseJSON(str)

Затем вы получаете объект js

Комментарии:

1. Его пример уже является объектом, а не строкой, которую нужно проанализировать.

Ответ №3:

Попробуйте этот код :

 function LikesSuccess(result, userContext, methodName) {
            for (var property in result.Properties) {
                alert(result[property]);
            }
        }
  

Я помню, что использовал нечто подобное, когда работал с Asp.Net Ajax, веб-сервисы. Однако не уверен в правильном синтаксисе.