为DocumentDb定制C#poco的序列化

Mar*_*and 6 azure-cosmosdb

是否可以更改documentDb的C#poco的默认序列化?例如,id-property似乎需要小写,但Id属性的默认序列化是大写.理想情况下,我们希望所有json属性都以小写字符开头.到目前为止我们找到的唯一方法是用[JsonProperty(PropertyName ="id")]装饰属性,但它不是很优雅.

Mic*_*lis 5

目前您无法更改DocumentDB的默认序列化程序,但您可以使用自己的库或JSON.NET对其进行序列化,并通过执行以下操作将JSON字符串存储到集合中:

await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream)); 
Run Code Online (Sandbox Code Playgroud)

将流传输到json字符串(可以来自文件,也可以来自内存中的字符串等).你可以找到更多信息我的博客文章的互联网档案的版本,其中用于居住在这里

编辑: DocumentDB .NET SDK 1.16.0+支持JSON序列化程序设置.https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet

  • 链接坏了:( (2认同)

And*_*Liu 3

以下是在 DocumentDB 文档中获取小写或驼峰式属性的几种方法:

  • 按照你提到的使用[JsonProperty(PropertyName = "id")]

  • 将 POCO 中的 C# 属性更改为小写。

  • Microsoft.Azure.Documents.Document让您的 POCO从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://learn.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet