2011-09-07 6 views
2

Comment fonctionne la sérialisation MVC asp.net pour l'objet JSON sur les actions du contrôleur?Comment fonctionne la sérialisation MVC asp.net pour l'objet JSON sur les actions du contrôleur?

Par exemple, j'ai un objet personnalisé et si envoyer une demande de paiement ajax avec des objets JSON à l'action du serveur

public ActionResult(List<CustomObject> abc) 
{ 
    // Object is serialized automatically how MVC is doing it is the question. 
} 

La raison pour laquelle je demande est que certains objets de la mine ne sont pas correctement serialzed et par conséquent la perte de données est là, alors je dois revenir à l'ancienne méthode de la valeur de chaîne à serializaiton.

public ActionResult(string abc) 
{ 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 

    List<CustomObject> lstabc = serializer.Deserialize<List<CustomObject>>(abc); 
} 

Ce que je voudrais éviter et d'autre part, qui sont les meilleures bibliothèques pour faire sérialisation JSON MVC Asp.net?

+0

Je pense que vous auriez besoin d'écrire votre propre classe JsonResult (avec la méthode d'extension appropriée pour le contrôleur). Afaik la meilleure bibliothèque JSON pour .NET est Newtonsoft.JSON (disponible sur NUGet) – MattDavey

Répondre

1

La désérialisation est prise en charge par le modèle de liant. Si vous constatez que cela ne fonctionne pas, vous pouvez créer votre propre classeur de modèle personnalisé et l'enregistrer avec le framework. Cela devrait vous permettre d'éviter tout ce bruit de désérialisation dans vos contrôleurs.

Il y a quelques liens vers des explications sur ce sujet et comment mettre en œuvre un modèle de liaison personnalisé dans la suite SO question:

ASP.Net MVC Custom Model Binding explanation

L'un des plus populaires bibliothèques de sérialisation JSON est la bibliothèque newtonsoft de json.net - Je l'ai utilisé efficacement à plusieurs reprises:

http://james.newtonking.com/pages/json-net.aspx

Bonne chance!

Questions connexes