2010-08-23 7 views
7

Si j'ai un service web (.asmx) et que je veux qu'il utilise Json.NET pour sérialiser tous les objets que je reviens de ce service web, y a-t-il un moyen pour faire ça?Comment faire de Json.NET le Sérialiseur Json par défaut

En d'autres termes, j'ai une classe comme ceci:

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

     public string LastName {get; set;} 

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

Et dans mon service web, j'ai ceci:

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

     return p; 
    } 

Si vous utilisez jQuery je définir le type de retour à JSON, il sérialise mon objet à json.

Est-il possible de le faire utiliser Json.net via un paramètre dans web.config ou quelque chose de similaire?

Répondre

1

Juste JSON - no. Vous êtes seulement capable de redéfinir l'ensemble IHttpHandlerFactory utilisant

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

Mais cela signifie que vous devrez soit revenir à la mise en œuvre par défaut en utilisant la réflexion ou la mise en œuvre de votre espace de noms analogique System.Web.Script.Services (qui est assez grand). En fait, je l'ai fait avec des retards de réflexion à d'autres fins (gestion centralisée des erreurs), donc cela devrait être possible, mais cela nécessite de la précision et serait très fragile entre les versions .NET.

Utilisez-vous ASP.NET classique ou MVC? Si vous utilisez MVC, utilisez simplement un contrôleur, c'est tellement plus simple.

+0

Merci pour l'aide. Nous avons fini par suivre une route différente. Lorsque nous devions retourner un objet, nous créions une classe "Slim" et utilisions JsonConvert.SerializeObject pour le sérialiser. De cette façon, nous avons eu plus de contrôle sur les informations qui ont été renvoyées via le service Web. –

Questions connexes