NewtonsoftのJSON.NETには、一組のアーキテクチャ上のアップデートがあり、サードパーティのライブラリを使うプロジェクトで、使いやすくなった。この2つのフィーチャはDefaultSettings と Extension Dataとして知られている。
JSON.NET 5r5では、開発者はJsonSerializerSettings クラスを使って、シリアライズ/デシリアライズのオプションをオーバーライドすることができる。これは通常JsonConvertメソッドに、それが呼ばれるあるいは、新しいJsonSerializerを作成するのに使われる毎に、渡される。
新しいデフォルトのスキームにオプトインしたいライブラリはJsonSerializer.CreateDefaultを使用することがでる。これは、アプリケーションがJsonConvert.DefaultSettingsメソッドを介して定義したデフォルト値を使用します。この動作を望まないライブラリは、普通にJsonSerializerのインスタンスを作成し続けることができる。
注意して欲しいのは、JsonConvert.DefaultSettingsは、JsonSerializerSettingsのインスタンスではなくFunc
もう1つの変更は、拡張データのサポートだ。これは、生のJSONペイロードで利用可能なデータで、それ以外ではクラス構造で表現されていないデータである。通常、これはサーバー定義を変更しても、それに合わせてクライアントが更新されていない場合に発生する。
WCFでは、拡張データはIExtensibleDataObjectインターフェースを介して利用可能になる。これはタイプExtensionDataObject(殆ど役に立たない不透明なクラス)の唯一のプロパティを提供する。ExtensionDataObjectが持ちいかなるデータもデータコントラクトシリアライザー以外からは利用できない。ということは、これが使われるのは、あるデータをシリアライズし、それを古いバージョンのコードでデシリアライズし、再シリアライズし、それから元のバージョンで再びデシリアライズする、という極めて稀なケースだけだ、ということである。
JSON.Netは、文字列とJTokenオブジェクトの辞書としての拡張データを公開する。この辞書は、[JsonExtensionData]属性のタグ付きプロパティまたはフィールドを介して公開される。インターフェイスの代わりに属性を使用することにより、開発者はプライベートとしてフィールドをマークすることで、カプセル化を維持できる。