веб-сервис должен возвращать json

Мне нужен мой веб-сервис для возврата JSON ...

В моем файле .asmx есть следующий код:

namespace Feed
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]

    [System.Web.Script.Services.ScriptService]
    public class searchPerson : System.Web.Services.WebService
    {

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public Person GetDave()
            {
                Person dave = new Person();

                dave.FirstName = "Dave";
                dave.LastName = "Ward";

         return dave;
        }
    }
}

Что возвращает следующее:

<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <FirstName>Dave</FirstName>
  <LastName>Ward</LastName>
</Person>

Как заставить его возвращать JSON вместо XML?


person Mikael    schedule 20.11.2011    source источник
comment
Если вам нужен JSON, а не XML, почему у вас определено пространство имен?   -  person Oded    schedule 21.11.2011
comment
Похоже, он настроен для обоих прямо сейчас .. Можете ли вы перейти на YourPage.asmx / js и увидеть скрипт прокси Javascript?   -  person Mike Christensen    schedule 21.11.2011
comment
@MikeChristensen Да, это возможно   -  person Mikael    schedule 21.11.2011
comment
Так как ты это называешь? Обычно лучше всего просто включить Javascript-файл прокси, который установит тип содержимого на application / json и все настроит правильно.   -  person Mike Christensen    schedule 21.11.2011
comment
@MikeChristensen Извините, но я не уверен, как я это делаю, не могли бы вы объяснить. Я пытаюсь прочитать данные из своего веб-сервиса, отправив запрос на jsonviewer.stack.hu   -  person Mikael    schedule 21.11.2011
comment
Взгляните на этот пример. debugmode.net/2011/05/15/wcf -rest-service-with-josn-data.   -  person Chad    schedule 21.11.2011


Ответы (2)


Определение вашего веб-сервиса выглядит правильным. Убедитесь, что вы вызываете службу через сообщение, и помните, что ключ определяет заголовок «тип содержимого» как application/json.

(Это использует jQuery, но вы можете использовать JavaScript низкого уровня, если хотите)

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8;",
    url: "http://MyWebServiceURL",
    data: JSON.stringify({ ParameterName: "DataToSend" }),
    dataType: "json",
    success: function (data, textStatus, jqXHR) {
        //do something
    },
    error: function (jqXHR, textStatus, errorThrown) {
        //fail nicely
    }
});
person Maxim Gershkovich    schedule 21.11.2011
comment
Это показало, что веб-сервис работал, проблема заключалась в том, как я его вызвал из своего приложения для iPhone. - person Mikael; 21.11.2011

Перед тем как начать, добавьте следующие ссылки:

using System.Web.Script.Services;
using System.Web.Script.Serialization;

Используйте приведенный ниже код в своем методе для преобразования любых данных в формат данных JSON в конце:

JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(empData);

empData - это массив строк данных из DataTable.

person Kiran teja Avvaru    schedule 29.11.2012