2

外部ソースからの 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 . 基本的にマイクロソフトはセキュリティ対策としてアイテム数を制限しています。

これをオーバーライドする方法は、サポート記事にあるように 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 がある限り)。

/編集: あなたのリーダーは、バニラの Microsoft Webstack に固執することを望んでいると読みました。ただし、もう 1 つのアセンブリを参照すると、時間と多くの頭痛の種を節約できます。

于 2012-05-29T22:52:32.360 に答える
0

これはMicrosoftのJSONシリアライザーです

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

何度か使用しましたが、問題ありませんでした。Newtonsoft ほどフル機能ではありませんが、ほとんどのシナリオを処理します

于 2012-05-30T00:01:58.690 に答える