2

我正在编写一个控制台应用程序来解析来自外部源的 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。基本上,微软限制项目数量作为安全预防措施。

覆盖它的方法是向 Web.config 添加一条记录,如支持文章中所述,但在我的情况下它不起作用。我做了一些研究,发现其他人在这里遇到了这个问题:http: //msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

所以我的问题是:有没有办法使用 JavaScriptSerializer 在控制台应用程序中反序列化具有大量集合的 JSON 对象?

请注意:我的团队负责人不希望使用 Microsoft 以外的任何库。这意味着我不能使用 JSON.NET(又名 NEWTONSOFT),所以请不要推荐它。

4

2 回答 2

4

我建议您选择其他一些 Json De/Serializer。例如:http: //james.newtonking.com/projects/json-net.aspx

它几乎可以处理我扔给它的任何东西。甚至来自 Couchbase 服务器的 TB 大小的转储(只要您在要反序列化/序列化的机器中有适当的 RAM)。

/edit:我读到您的领导更愿意坚持使用普通的 Microsoft Webstack。但是,再引用一个程序集会节省大量时间和很多麻烦。

于 2012-05-29T22:52:32.360 回答
0

这是来自 Microsoft 的 JSON 序列化程序

http://nuget.org/packages/System.Json

我已经多次使用它并且没有任何问题。不像 Newtonsoft 那样功能齐全,但可以处理大多数场景

于 2012-05-30T00:01:58.690 回答