2010-08-23 2 views
7

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

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

[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

Только JSON - нет. Вы только в состоянии пересмотреть весь IHttpHandlerFactory с помощью

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

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

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

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

+0

Спасибо за помощь. Мы поехали по другому пути. Когда нам нужно было вернуть объект, мы бы создали класс «Slim» и использовали JsonConvert.SerializeObject для его сериализации. Таким образом, мы больше контролировали информацию, которая была возвращена через веб-службу. –

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