System.Web.Script.Serialization.JavaScriptSerializer ou System.Runtime.Serialization.Json.DataContractJsonSerializer?

Quelle est la différence entre les deux? Pourquoi voudriez-vous utiliser l’un sur l’autre?

Trouvé ici: http://aaron-powell.spaces.live.com/blog/cns!91A824220E2BF369!150.entry

DataContractJsonSerializer Le principal objective de DataContractJsonSerializer doit être utilisé avec WCF, dans la mesure où l’une des sérialisations est l’un des principaux objectives de WCF. En outre, il est également mieux équipé pour gérer des classes complexes ne disposant que de certaines propriétés pour la sérialisation. Cette classe est plus fortement typée, a plus de connaissances sur le (s) type (s) de traitement (s) et une meilleure gestion des erreurs pour les JSON mal formés.

JavaScriptSerializer Cette classe est en revanche beaucoup mieux équipée pour la sérialisation rapide, c’est une approche plus cow-boy. Il y a moins de vérification d’erreur et moins de contrôle sur les propriétés sérialisées.

Mettre à jour

Le lien ci-dessus étant mort, voici un autre lien: http://kb.cnblogs.com/a/1454030 .

Personnellement, je regarderais Json.NET – cela présente l’avantage d’être compatible .NET 2.0

JavaScriptSerializer est marqué comme obsolète dans Framework 3.5. Vous ne devriez pas l’utiliser pour cette raison. Cependant, revenons à votre question. JavaScriptSerializer ne nécessite pas que les classes soient marquées comme [Serializable] ou comme [DataContract], mais DataContractJsonSerializer le fait. Si vous avez des classes compilées que vous ne pouvez pas marquer avec des atsortingbuts, vous pouvez utiliser le sérialiseur JSON plus ancien.