BT

JSON.NET 5のアーキテクチャ変更

| 作者: Jonathan Allen フォローする 595 人のフォロワー , 翻訳者 編集部N フォローする 0 人のフォロワー 投稿日 2013年5月16日. 推定読書時間: 2 分 |

原文(投稿日:2013/05/09)へのリンク

NewtonsoftのJSON.NETには、一組のアーキテクチャ上のアップデートがあり、サードパーティのライブラリを使うプロジェクトで、使いやすくなった。この2つのフィーチャはDefaultSettings と Extension Dataとして知られている。

JSON.NET 5r5では、開発者はJsonSerializerSettings クラスを使って、シリアライズ/デシリアライズのオプションをオーバーライドすることができる。これは通常JsonConvertメソッドに、それが呼ばれるあるいは、新しいJsonSerializerを作成するのに使われる毎に、渡される。

新しいデフォルトのスキームにオプトインしたいライブラリはJsonSerializer.CreateDefaultを使用することがでる。これは、アプリケーションがJsonConvert.DefaultSettingsメソッドを介して定義したデフォルト値を使用します。この動作を望まないライブラリは、普通にJsonSerializerのインスタンスを作成し続けることができる。

注意して欲しいのは、JsonConvert.DefaultSettingsは、JsonSerializerSettingsのインスタンスではなくFuncを受け入れることだ。 すなわちデフォルトのJsonSerializerSettingsの新しいコピーが必要な度に、生成される。

もう1つの変更は、拡張データのサポートだ。これは、生のJSONペイロードで利用可能なデータで、それ以外ではクラス構造で表現されていないデータである。通常、これはサーバー定義を変更しても、それに合わせてクライアントが更新されていない場合に発生する。

WCFでは、拡張データはIExtensibleDataObjectインターフェースを介して利用可能になる。これはタイプExtensionDataObject(殆ど役に立たない不透明なクラス)の唯一のプロパティを提供する。ExtensionDataObjectが持ちいかなるデータもデータコントラクトシリアライザー以外からは利用できない。ということは、これが使われるのは、あるデータをシリアライズし、それを古いバージョンのコードでデシリアライズし、再シリアライズし、それから元のバージョンで再びデシリアライズする、という極めて稀なケースだけだ、ということである。

JSON.Netは、文字列とJTokenオブジェクトの辞書としての拡張データを公開する。この辞書は、[JsonExtensionData]属性のタグ付きプロパティまたはフィールドを介して公開される。インターフェイスの代わりに属性を使用することにより、開発者はプライベートとしてフィールドをマークすることで、カプセル化を維持できる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT