这两者有什么区别?为什么会选择其中之一?
此处发现:http://aaron-powell.spaces.live.com/blog/cns!91A824220E2BF369!150.entry
DataContractJsonSerializer DataContractJsonSerializer 的主要目的是用于 WCF,因为序列化是 WCF 的重点之一。此外,它还可以更好地处理仅对某些属性进行序列化的复杂类。 此类更加强类型化,具有更多关于其处理的类型的知识,并且对格式错误的 JSON 有更好的错误处理。
JavaScriptSerializer 另一方面,此类更适合快速序列化,是一种更为随意的方法。它的错误检查较少,并且在哪些属性需要进行序列化方面控制较少。
更新
由于上面的链接已经失效,这里提供另一个链接:http://kb.cnblogs.com/a/1454030。
JavaScriptSerializer在3.5框架中被标记为过时。因此,您不应该使用它。但是,回到您的问题。JavaScriptSerializer不需要将类标记为[Serializable]或[DataContract],但DataContractJsonSerializer需要。如果您有编译好的类无法标记属性,您可能需要使用旧的JSON序列化程序。