Как сделать Json.NET стандартным сериализатором Json - PullRequest
7 голосов
/ 24 августа 2010

Если у меня есть веб-сервис (.asmx) и я хочу, чтобы он использовал Json.NET для сериализации всех объектов, которые я возвращаю из этого веб-сервиса, есть ли способ сделать это?

Другими словами, у меня есть такой класс:

    [JsonObject(MemberSerialization.OptOut)]
    public partial class Person
    {
        public string FirstName {get; set;}

        public string LastName {get; set;}

        [JsonIgnore]    
        public string Password {get; set;}    
    }

И в моем веб-сервисе у меня есть это:

    [WebMethod]
    public Person GetBlahPerson()
    {
        Person p = new Person();
        p.FirstName = "bob";
        p.LastName = "smith";
        p.Password = "don't tell";

        return p;
    }

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

Можно ли заставить его использовать Json.net через настройку в web.config или что-то подобное?

1 Ответ

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

Просто JSON - нет. Вы можете только переопределить целое IHttpHandlerFactory, используя

<add verb="*" path="*.asmx" type="YourScriptHandlerFactory" validate="false"/>

Но это будет означать, что вам нужно будет либо вернуться к реализации по умолчанию, используя отражение, либо реализовать свой аналог пространства имен System.Web.Script.Services (которое довольно велико).

Я на самом деле сделал это с помощью откатов отражения для других целей (централизованная обработка ошибок), поэтому это должно быть возможно, но это требует точности и будет очень хрупким между выпусками .NET.

Используете ли вы классический ASP.NET или MVC? Если вы используете MVC, просто используйте контроллер, это намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...