2010-08-23 22 views
7

Jeśli posiadam usługę WWW (.asmx) i chcę, aby używała Json.NET do serializacji wszystkich obiektów, które zwracam z tej usługi internetowej, czy istnieje sposób aby to zrobić?Jak ustawić Json.NET jako domyślny Json Serializer

Innymi słowy, mam klasa tak:

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

     public string LastName {get; set;} 

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

I w moim usługi internetowej, mam to:

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

     return p; 
    } 

Jeśli jQuery ustawić typ zwracany do formatu JSON, serializuje mój obiekt do json.

Czy można użyć Json.net poprzez ustawienie w web.config lub coś podobnego?

Odpowiedz

1

Tylko JSON - nie. Jesteś tylko w stanie przedefiniować cały IHttpHandlerFactory użyciu

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

Ale to oznacza, że ​​trzeba będzie albo spaść z powrotem do domyślnego wdrożenia przy użyciu odbicia lub zaimplementować analogu System.Web.Script.Services nazw (to jest dość duży).

Rzeczywiście zrobiłem to z refrakcjami refleksyjnymi do innych celów (scentralizowana obsługa błędów), więc powinno być możliwe, ale wymaga to precyzji i byłoby bardzo kruche między wydaniami .NET.

Czy używasz klasycznego ASP.NET lub MVC? Jeśli używasz MVC, po prostu użyj kontrolera, to jest o wiele łatwiejsze.

+0

Dzięki za pomoc. Skończyło się na innej trasie. Kiedy potrzebowaliśmy zwrócić obiekt, stworzyliśmy klasę "Slim" i użyliśmy JsonConvert.SerializeObject do serializacji. W ten sposób mieliśmy większą kontrolę nad informacjami, które zostały zwrócone za pośrednictwem usługi internetowej. –

Powiązane problemy