JSON亚马逊 DynamoDB 中的支持 - AWS SDK for .NET

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

JSON亚马逊 DynamoDB 中的支持

注意

本主题中的信息特定于基于的项目。 NET框架和 3.3 及更早 AWS SDK for .NET 版本。

使用 Amazon DynamoDB 时 AWS SDK for .NET 支持JSON数据。这使您能够更轻松地从 Dynam JSON oDB 表中获取格式化数据,并将JSON文档插入到 DynamoDB 表中。

从 DynamoDB 表中获取格式的数据 JSON

以下示例说明如何从 DynamoDB 表中获取格式的数据:JSON

// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.DocumentModel; var client = new AmazonDynamoDBClient(); var table = Table.LoadTable(client, "AnimalsInventory"); var item = table.GetItem(3, "Horse"); var jsonText = item.ToJson(); Console.Write(jsonText); // Output: // {"Name":"Shadow","Type":"Horse","Id":3} var jsonPrettyText = item.ToJsonPretty(); Console.WriteLine(jsonPrettyText); // Output: // { // "Name" : "Shadow", // "Type" : "Horse", // "Id" : 3 // }

在前面的示例中,该Document类的ToJson方法将表中的项目转换为JSON格式化的字符串。项目通过 Table 类的 GetItem 方法检索。为了确定要获取的项目,在本示例中,该GetItem方法使用目标项目 hash-and-range的主键。为确定要从中获取项目的表,Table 类的 LoadTable 方法使用 AmazonDynamoDBClient 类的实例以及 DynamoDB 中的目标表名。

将JSON格式数据插入到 DynamoDB 表中

以下示例说明如何使用JSON格式将项目插入到 DynamoDB 表中:

// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.DocumentModel; var client = new AmazonDynamoDBClient(); var table = Table.LoadTable(client, "AnimalsInventory"); var jsonText = "{\"Id\":6,\"Type\":\"Bird\",\"Name\":\"Tweety\"}"; var item = Document.FromJson(jsonText); table.PutItem(item);

在前面的示例中,该Document类的FromJson方法将JSON格式的字符串转换为项目。项目通过 PutItem 类的 Table 方法插入表中,该方法使用包含项目的 Document 类的实例。为确定要插入项目的表,调用 Table 类的 LoadTable 方法,并指定 AmazonDynamoDBClient 类的实例以及 DynamoDB 中的目标表名。

DynamoDB 数据类型转换为 JSON

无论何时调用DocumentToJson的方法,然后在生成的JSON数据上调用该FromJson方法将JSON数据转换回Document类的实例,某些 DynamoDB 数据类型都不会按预期进行转换。具体来说:

  • DynamoDB 集(SSNSBS和类型)将转换为数组。JSON

  • DynamoDB 二进制标量和集(BBS和类型)将转换为 JSON base64 编码的字符串或字符串列表。

    在这种情况下,您必须调用该DocumentDecodeBase64Attributes的方法,用正确的二进制表示形式替换 base64 编码JSON的数据。以下示例使用正确的二进制表示形式,在 Document 类的实例中,替换 base64 编码的名为 Picture 的二进制标量项目属性。此示例还在 Document 类的相同实例中,为名为 RelatedPictures 的 base64 编码二进制集项目属性执行相同的操作。

    item.DecodeBase64Attributes("Picture", "RelatedPictures");

更多信息

有关使用 DynamoDB JSON 进行编程的更多信息和示例, AWS SDK for .NET请参阅: