1. ホーム
  2. c#

[解決済み] DataContractJsonSerializerとJavaScriptSerializerの違いは何ですか?

2023-04-14 17:02:39

質問

.NET Frameworkには System.Runtime.Serialization.Json.DataContractJsonSerializer が同梱されています。 System.Web.Script.Serialization.JavaScriptSerializer。 で、どちらもJSONを処理/シリアライズします。これらのタイプのいずれかを選択するタイミングをどのように判断すればよいのでしょうか。MSDN は、これらの相対的な利点が何であるかを明確にしていません。

私たちには、JSON を消費または送信するいくつかのプロジェクトがあり、これまでそれぞれに選択されたクラスは、各プロジェクトの主要な開発者の意見に依存してきました。いくつかは単純で、2 つは JSON から管理された型 (型はストリームに密接にマッピングされない) を生成する複雑なロジックがありますが、速度には重点を置いておらず、1 つは速度を必要とします。少なくとも現在のところ、WCF と相互作用するものはありません。

私は代替ライブラリに興味がありますが、誰かが私の質問に対する答えも持っているかもしれないと期待しています。

どのように解決するのですか?

DataContractJsonSerializer は、シリアライズされる型が通常 DataContract 属性が適用された POCO クラスである WCF クライアント アプリケーションでの使用を目的としています。 DataContractがなければ、シリアライゼーションもない。WCFのマッピング機構は送受信を非常にシンプルにするが、それはプラットフォームが均質である場合に限られる。 異なるツールセットを混在させ始めると、プログラムが横道にそれるかもしれません。

JavaScriptSerializer は匿名型 (一方通行) を含むあらゆる型をシリアライズでき、より適合性の高い方法でそれを行います。 WCFのquot;automagic"を失いますが、より多くの統合オプションを得ることができます。

コメントからわかるように、AJAXシリアライゼーションには多くの選択肢があり、速度対保守性の問題に対処するために、すべてのチームのニーズを満たす解決策を見つけるためにそれらを調査する価値があるかもしれません。

2014-04-07更新しました。 できればJSON.NETを使うことをお勧めします。 以下を参照してください。 http://james.newtonking.com/json この質問で検討した3つのライブラリのレビューについては、機能比較を参照してください。

2015-05-26更新しました。 あなたの会社が商業ライセンス可能な製品の使用を必要とする場合、または最後の1ビットまで性能を必要とする場合は、次のものもチェックしてみてください。 https://servicestack.net/ .