6

documentDb の C# poco のデフォルトのシリアル化を変更することは可能ですか? たとえば、id プロパティは小文字にする必要があるようですが、Id プロパティのデフォルトのシリアル化は大文字です。理想的には、すべての json プロパティを小文字で開始する必要があります。これまでに見つけた唯一の方法は、プロパティを [JsonProperty(PropertyName = "id")] で装飾することですが、あまりエレガントではありません。

4

2 に答える 2

5

現在、DocumentDB の既定のシリアライザーを変更することはできませんが、独自のライブラリまたは JSON.NET を使用してシリアライズし、次のようにして JSON 文字列をコレクションに格納できます。

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

ストリームをjson文字列にストリーミングします(ファイルから、またはメモリ内文字列などから)。詳細については、以前はここにあった私のブログ投稿のインターネット アーカイブ版をご覧ください。

編集: JSON シリアライザーの設定は、DocumentDB .NET SDK 1.16.0 以降でサポートされています。https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet

于 2014-10-30T03:41:02.827 に答える
3

DocumentDB ドキュメントで小文字またはキャメル ケースのプロパティを取得するいくつかの方法を次に示します。

  • あなたが言ったように使用[JsonProperty(PropertyName = "id")]してください。

  • POCO の C# プロパティを小文字に変更します。

  • Id プロパティを持つDocumentDB .NET LibraryMicrosoft.Azure.Documents.DocumentからPOCO を拡張します (舞台裏で使用すると思われます)。[JsonProperty(PropertyName = "id")]

  • デフォルトのシリアライザを使用する代わりに、Json.NETライブラリを使用して、そのキャメル ケース リゾルバを使用してシリアル化できます。Mats Karlsson は、これに関する非常に優れたブログ記事をここに掲載しています: http://www.matskarlsson.se/blog/serialize-net-objects-as-camelcase-json

編集: JSON シリアライザーの設定は、DocumentDB .NET SDK 1.16.0 以降でサポートされています。https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet

于 2014-09-16T22:07:35.793 に答える