为DocumentDb定制C#poco的序列化

问题描述 投票:6回答:2

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

azure-cosmosdb
2个回答
5
投票

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

await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream)); 

将流传输到json字符串(可以来自文件,也可以来自内存中的字符串等)。你可以在internet archive's edition of my blog post找到更多关于used to reside here的信息

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


3
投票

这里有两种方法可以在DocumentDB文档中获得小写或驼峰式属性:

  • 如上所述使用[JsonProperty(PropertyName = "id")]
  • 将POCO中的C#属性更改为小写。
  • 让你的POCO从Microsoft.Azure.Documents.Document扩展DocumentDB .NET Library,它具有Id属性(我相信在幕后使用[JsonProperty(PropertyName = "id")])。
  • 您可以使用Json.NET库来使用它的camel-case解析器进行序列化,而不是使用默认的序列化程序。 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

© www.soinside.com 2019 - 2024. All rights reserved.