BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JSON.NET 5のアーキテクチャ変更

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

原文(投稿日: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]属性のタグ付きプロパティまたはフィールドを介して公開される。インターフェイスの代わりに属性を使用することにより、開発者はプライベートとしてフィールドをマークすることで、カプセル化を維持できる。

この記事に星をつける

おすすめ度
スタイル

BT