使用大集合反序列化JSON

时间:2012-05-29 22:45:51

标签: c# .net json

我正在编写一个控制台应用程序来解析来自外部源的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),所以请不要建议它。

2 个答案:

答案 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那样功能齐全,但处理大多数场景