是否可以更改 documentDb 的 C# poco 的默认序列化?例如,id-property 似乎需要小写,但 Id 属性的默认序列化是大写。理想情况下,我们希望所有 json 属性都以小写字符开头。到目前为止,我们发现的唯一方法是用 [JsonProperty(PropertyName = "id")] 装饰属性,但这不是很优雅。
2 回答
目前您无法更改 DocumentDB 的默认序列化程序,但是您可以使用自己的库或 JSON.NET 对其进行序列化,并将 JSON 字符串存储到集合中:
await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream));
将流流式传输到您的 json 字符串(可以来自文件,也可以来自内存中的字符串等)。您可以在我的博客文章的互联网档案版中找到更多信息,该文章曾经驻留在此处
编辑: DocumentDB .NET SDK 1.16.0+ 支持 JSON 序列化程序设置。https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet
这里有几种方法可以在 DocumentDB 文档中获取小写或驼峰式属性:
按照你说的使用
[JsonProperty(PropertyName = "id")]
。将 POCO 中的 C# 属性更改为小写。
让您的 POCO
Microsoft.Azure.Documents.Document
从DocumentDB .NET Library扩展,它具有 Id 属性(我相信[JsonProperty(PropertyName = "id")]
在幕后使用)。您可以使用Json.NET库来使用它的驼峰式解析器进行序列化,而不是使用默认的序列化程序。Mats Karlsson 在这里有一篇非常好的博客文章:http: //www.matskarlsson.se/blog/serialize-net-objects-as-camelcase-json
编辑: DocumentDB .NET SDK 1.16.0+ 支持 JSON 序列化程序设置。https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet