我正在编写一个控制台应用程序来解析来自外部源的JSON数据。这是在C#中使用.NET 4.0(完整版,而不是客户端配置文件)。 我试图使用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对象?
请注意:我的团队负责人宁愿不使用微软以外的任何图书馆。这意味着我不能使用JSON.NET(AKA NEWTONSOFT),所以请不要建议它。
答案 0 :(得分:4)
我建议你选择其他一些Json De / Serializer。例如:http://james.newtonking.com/projects/json-net.aspx
它几乎处理了我扔的任何东西;甚至来自Couchbase服务器的TB大小的转储(只要你在要去/序列化的机器中有适当的RAM)。
/编辑:我已经读过你的主管更喜欢坚持使用香草Microsoft Webstack。然而,参考一个组件会节省大量的时间和很多麻烦。
答案 1 :(得分:0)
这是Microsoft的JSON序列化程序
http://nuget.org/packages/System.Json
我已经多次使用它并且没有任何问题。 不像Newtonsoft那样功能齐全,但处理大多数场景