我正在使用 Json.Net 来装饰我的文档属性。
public class MyDocumentType : Document
{
[JsonProperty]
[JsonConverter(typeof(StringEnumConverter))]
public MyEnumType EnumProertyName{ get; set; }
[JsonProperty]
public uint MyIntPrperty{ get; set; }
}
当我更新 cosmos db 中的文档时,它没有更新为字符串值。它始终默认为默认枚举值。如何使其序列化和反序列化为字符串值。我不想使用数字,就像添加一个新的枚举值一样,事情就会崩溃。
使用 Cosmos DB SDK 3+,您无法通过JsonSerializerSettings
直接地。
你需要延长CosmosSerializer
。你可以得到一个例子CosmosSerializer
实施自CosmosJsonDotNetSerializer https://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos.Encryption/src/CosmosJsonDotNetSerializer.cs在 Cosmos DB SDK 中。
不幸的是,这个班级是internal
sealed
所以你的代码中可能有逐字复制。我还提出了一个 GitHub 问题,要求 Cosmos 团队解决这个问题here https://github.com/Azure/azure-cosmos-dotnet-v3/issues/1813.
一旦您的代码中有了 CosmosSerializer 的实现,您就可以通过JsonSerializerSettings
如下:
// Create CosmosClientOptions
var cosmosClientOptions = new CosmosClientOptions
{
Serializer =
new CosmosJsonDotNetSerializer(
new JsonSerializerSettings() {
// Your JSON Serializer settings
})
};
var cosmosClient = new CosmosClient(connectionString, cosmosClientOptions);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)