c# - 我可以将 Newtonsoft.Json 与 CosmosDb v3 一起使用吗?
问题描述
我已按照这些说明与Newtonsoft
CosmosDb v3一起在我的 Blazor Server 项目中使用。
因此我Startup.cs
指定了几个设置和转换器。
services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
options.SerializerSettings.Formatting = Formatting.Indented;
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
options.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore;
options.SerializerSettings.Converters.Add(new ISubfileConverter());
options.SerializerSettings.Converters.Add(new ISubunitConverter());
options.SerializerSettings.Converters.Add(new IElementConverter());
options.SerializerSettings.Converters.Add(new IMetadataConverter());
});
services.AddSingleton<ICosmosSrcDocService>(InitializeCosmosSrcClientInstance(Configuration.GetSection("SourceCosmosDb"))
.GetAwaiter().GetResult());
但是,当我使用UpsertItemAsync()
它时,它似乎并没有使用它。
有没有办法告诉 CosmosDbStartup.cs
使用这个配置?
更新 Cosmos 配置
CosmosClientBuilder clientBuilder = new CosmosClientBuilder(account, key);
CosmosClient client = clientBuilder
.WithConnectionModeDirect()
.Build();
CosmosTrgDocService cosmosDbService = new CosmosTrgDocService(client, databaseName, containerName);
解决方案
我发现CosmosClientBuilder
有一个WithCustomSerializer()
方法。这让我发现您可以从中派生一个类CosmosSerializer
,然后将其传递给该WithCustomSerializer()
方法。
当您覆盖ToStream<T>
andFromStream<T>
方法时,您可以控制序列化。另请参阅此示例。
推荐阅读
- css - 如何将 Material UI TableSortLabel 箭头更改为左侧?
- html - 如何使引导轮播按钮始终彼此相邻
- c++ - 如何在一个代码库中支持两个版本不同命名空间的第三方库
- angular - Angular 9“无法在'FileReader'上执行'readAsDataURL':参数1不是'Blob'类型。”
- arrays - 仅使用 Join 和 Filter 函数返回唯一值
- javascript - 难倒为什么 Javascript AJAX 成功:JSON 数据是“无效的”
- testing - 为 TestCafe repo 贡献功能/修复
- javascript - 有人可以帮我修复这个脚本吗?
- javascript - 自定义剑道网格工具栏按钮
- java - Java中的lambda函数树?