System.Web.Script.Serialization.JavaScriptSerializer或System.Runtime.Serialization.Json.DataContractJsonSerializer?(这是一个关于IT技术的问题)

28
这两者有什么区别?为什么会选择其中之一?

有用的相关SO问题链接:https://dev59.com/BHRB5IYBdhLWcg3wuZY1 - James Wiseman
3个回答

14

此处发现:http://aaron-powell.spaces.live.com/blog/cns!91A824220E2BF369!150.entry

DataContractJsonSerializer DataContractJsonSerializer 的主要目的是用于 WCF,因为序列化是 WCF 的重点之一。此外,它还可以更好地处理仅对某些属性进行序列化的复杂类。 此类更加强类型化,具有更多关于其处理的类型的知识,并且对格式错误的 JSON 有更好的错误处理。

JavaScriptSerializer 另一方面,此类更适合快速序列化,是一种更为随意的方法。它的错误检查较少,并且在哪些属性需要进行序列化方面控制较少。

更新

由于上面的链接已经失效,这里提供另一个链接:http://kb.cnblogs.com/a/1454030


链接因为Live Spaces 迁移到WordPress.com而断开了......也没有重定向。这篇文章还能在其他地方看到吗? - EAMann
谁会如此愚蠢地在没有指明原因的情况下,对一个六年前的回答进行负评? - Kamarey

9

就个人而言,我会看 Json.NET - 这个优点就是与 .NET 2.0 兼容。


1

JavaScriptSerializer在3.5框架中被标记为过时。因此,您不应该使用它。但是,回到您的问题。JavaScriptSerializer不需要将类标记为[Serializable]或[DataContract],但DataContractJsonSerializer需要。如果您有编译好的类无法标记属性,您可能需要使用旧的JSON序列化程序。


1
有趣,Marc。我不知道这个。谢谢你指出来。 - W. Kevin Hazzard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接