Azure Cosmos DB .NET SDK Version 3.0 のカスタムシリアライザとシリアライザの設定について
元ネタ:ISSUE:#550 serializerSettings with v3 client
Version 2までは、Clientにシリアライザの設定をすることができました。
var serializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; this.client = new DocumentClient(new Uri(this.options.CosmosDbEndPoint), this.options.CosmosDbKey, serializerSettings: serializerSettings);
しかし、2019/07/16段階では、Version 3ではカスタム設定が削除され、カスタムのシリアライザを設定できるようになりました。
参考:シリアライザの設定
参考:既定のシリアライザの実装
既定のシリアライザの設定を変更する方法を提供しない理由はないので、ISSUEとしてあがりました。
ISSUE:#551 Add support for JsonSerializerSettings on default serializer
カスタムシリアライザの使用方法
サンプル:https://github.com/Azure/azure-cosmos-dotnet-v3/pull/560/files
- CosmosSerializerを継承してカスタムシリアライザクラスを作成する。
- CosmosClientOptionsで、Serializerに作成したカスタムシリアライザクラスのインスタンスを渡す
- CosmosClientのインスタンス作成時にOptionを渡す
class JsonSerializerIgnoreNull : CosmosSerializer
{
……..
}CosmosClientOptions options = new CosmosClientOptions()
{
Serializer = new JsonSerializerIgnoreNull(),
};CosmosClient client = new CosmosClient(endpoint, key, options)