使用大型集合反序列化 JSON
本文关键字:反序列化 JSON 集合 大型 | 更新日期: 2023-09-27 18:35:45
我正在编写一个控制台应用程序,用于解析来自外部源的 JSON 数据。这是使用 .NET 4.0(完整版本,而不是客户端配置文件)的 C# 中。我正在尝试使用 System.Web.Script.Serialization.JavaScriptSerializer 类将 JSON 数据反序列化为对象,如下所示:
var targetObject = deserializer.Deserialize<TargetObjectType>(json);
通常这工作正常,但是当数据包含非常大的集合时,我会收到此错误:System.InvalidOperationException("由于对象的当前状态,操作无效。我做了一些研究,发现这个:http://support.microsoft.com/kb/2661403。基本上,作为安全预防措施,Microsoft限制项目的数量。
覆盖它的方法是按照支持文章中的说明向 Web.config 添加一条记录,但就我而言,它不起作用。我做了一些研究,发现其他人在这里有这个问题:http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx。
所以我的问题是:有没有办法使用 JavaScriptSerializer 在控制台应用程序中反序列化具有大型集合的 JSON 对象?
请注意:我的团队负责人不希望使用Microsoft以外的任何库。这意味着我不能使用 JSON.NET(又名牛顿软件),所以请不要建议它。
我建议你选择其他一些Json De/Serializer。例如:http://james.newtonking.com/projects/json-net.aspx
它几乎可以处理我扔给它的任何东西;甚至是来自Couchbase服务器的TB大小的转储(只要你在要解/序列化的机器中有适当的RAM)。
/编辑:我读到您的领导更喜欢坚持使用普通Microsoft Webstack。但是,再引用一个程序集将节省大量时间和很多麻烦。
这里是来自Microsoft的JSON序列化程序
http://nuget.org/packages/System.Json
我已经多次使用它,没有任何问题。不像Newtonsoft那样功能齐全,但可以处理大多数场景