本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
JSON亚马逊 DynamoDB 中的支持
注意
本主题中的信息特定于基于的项目。 NET框架和 3.3 及更早 Amazon SDK for .NET 版本。
使用 Amazon DynamoDB 时 Amazon 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
无论何时调用Document
类ToJson
的方法,然后在生成的JSON数据上调用该FromJson
方法将JSON数据转换回Document
类的实例,某些 DynamoDB 数据类型都不会按预期进行转换。具体来说:
-
DynamoDB 集(
SS
NS
、BS
和类型)将转换为数组。JSON -
DynamoDB 二进制标量和集(
B
BS
和类型)将转换为 JSON base64 编码的字符串或字符串列表。在这种情况下,您必须调用该
Document
类DecodeBase64Attributes
的方法,用正确的二进制表示形式替换 base64 编码JSON的数据。以下示例使用正确的二进制表示形式,在Document
类的实例中,替换 base64 编码的名为Picture
的二进制标量项目属性。此示例还在Document
类的相同实例中,为名为RelatedPictures
的 base64 编码二进制集项目属性执行相同的操作。item.DecodeBase64Attributes("Picture", "RelatedPictures");
更多信息
有关使用 DynamoDB JSON 进行编程的更多信息和示例, Amazon SDK for .NET请参阅: