.NET 中提供了 JavaScriptSerializer 类
System.Web.Script.Serialization 命名空间。 (在 System.Web.Extensions.dll 中提供)
它最初旨在支持 AJAX Web 服务器应用程序,但该类可以由任何将 .NET 类序列化和反序列化为 JSON 的应用程序(客户端、服务器、混合等)使用。我有一个桌面应用程序,可以捕获屏幕截图并上传到 Facebook,并使用此类来反序列化响应。
我是否想在 .NET 中寻找其他地方的 JSON 反序列化?
如果是这样,为什么?我该看哪里?
如果不是,那么为什么 JSON.Net 存在?纯粹是出于历史目的吗? (即,因为它是由社区在 JavaScriptSerializer 之前创建的)。
就我而言,有多种原因阻止我使用JavaScript序列化器 http://msdn.microsoft.com/it-it/library/system.web.script.serialization.javascriptserializer.aspx。这里是其中的一些。
1)处理匿名类型时丑陋的反序列化
虽然序列化的用法相当简单:
JavaScriptSerializer serializer = new JavaScriptSerializer();
String json = serializer.Serialize(data);
然而,对于反序列化,有一个小麻烦,因为反序列化器接受泛型类型以及内容:
serializer.Deserialize<T>(String s)
如果类型 T 在编译时未知并且需要是动态的,这可能会出现问题。据我了解,解决方法有点难看,因为它使用反射来创建通用方法(但它有效)
var result = typeof(JavaScriptSerializer).GetMethod("Deserialize")
.MakeGenericMethod(JsonDataType)
.Invoke(serializer, new object[] { inputContent });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)