Удаление объекта "d" из вывода json веб-службы ASP.Net - PullRequest
5 голосов
/ 11 мая 2010

У меня есть некоторый код javascript, который обрабатывает вывод json из веб-сервисов asp.net, созданных с помощью фреймворка 2.0.Теперь мне нужно поддерживать данные, возвращаемые веб-сервисами Framework 3.5.

Мой код JavaScript предполагает список объектов в качестве возвращаемого значения, что прекрасно работает в 2.0.Однако в Framework 3.5 список обернут в объект «d».Можно ли как-нибудь удалить оболочку "d" и просто вернуть список?

Я бы предпочел исправить это на стороне сервера

Ответы [ 3 ]

5 голосов
/ 11 мая 2010

Вы не можете настроить службы 3.5+, чтобы не возвращать .d. Хорошо, что он тоже там, потому что он защищает от сложного сценария перехвата JSON, который существует, когда внешняя сущность JSON является массивом.

Клиентские прокси-серверы ASP.NET AJAX автоматически скрывают .d от вас. Если это мешает, я предполагаю, что вы используете что-то вроде jQuery для вызова службы? Вы можете нормализовать .d в jQuery, используя его обратный вызов DataFilter, например, .

1 голос
/ 05 ноября 2018

Вот способ обойти это

    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public void Status()
    {
        MyObject myObject = new MyObject(); // your object here
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(myObject);

        HttpContext.Current.Response.Write(json);
    }
0 голосов
/ 11 февраля 2016

Что ж, если у вас есть преимущество перехода на клиентскую сторону, тогда лучше всего использовать jquery, и вы найдете массу решений. Но если вы хотите удалить «d» на слое сервиса, лучше всего переписать ваш веб-сервис в Web Api (вы также можете использовать WCF). Web Api не возвращает «d» в ответ.

...