[解決済み] DataContractJsonSerializerとJavaScriptSerializerの違いは何ですか?
質問
.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/ .
関連
-
[解決済み] SerializationとMarshalingの違いは何ですか?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] 2つの日付の差(日数)を計算する?
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み] YAMLとJSONの違いは何ですか?
-
[解決済み] int.Parse()とConvert.ToInt32の主な違いは何ですか?
-
[解決済み】Invoke()とBeginInvoke()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない