本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon DynamoDB 中的 JSON SupportAmazon SDK for .NET
本主题中的信息特定于基于 .NET 框架和Amazon SDK for .NET版本 3.3 及更早版本。
这些区域有:Amazon SDK for .NET在处理 Amazon DynamoDB 时,支持 JSON 数据。这使您能够更轻松地从 DynamoDB 表中获取 JSON 格式的数据以及将 JSON 文档插入到其中。
从 DynamoDB 表以 JSON 格式获取数据
以下示例显示了如何以 JSON 格式从 DynamoDB 表中获取数据:
// 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 目标项目的主键。要确定从哪个表中获取物品,LoadTable
的方法Table
类使用的实例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);
在上述示例中,FromJson
类的 Document
方法将 JSON 格式的字符串转换为项目。项目通过 PutItem
类的 Table
方法插入表中,该方法使用包含项目的 Document
类的实例。要确定要将项目插入的表格,LoadTable
的方法Table
类被调用,指定实例AmazonDynamoDBClient
类以及 DynamoDB 中目标表的名称。
DynamoDB 数据类型转换为 JSON
每当你打电话给ToJson
的方法Document
类,然后在生成的 JSON 数据上你调用FromJson
将 JSON 数据转换回实例的方法Document
类中,某些 DynamoDB 数据类型将不会按预期的方式进行转换。具体来说:
-
DynamoDB 集合(
SS
、NS
, 和BS
类型)将转换为 JSON 数组。 -
DynamoDB 二进制标量和集合(
B
和BS
类型)将转换为 base64 编码的 JSON 字符串或字符串列表。在此情况下,您必须调用
DecodeBase64Attributes
类的Document
方法,使用正确的二进制表示形式替换 base64 编码的 JSON 数据。以下示例使用正确的二进制表示形式,在Document
类的实例中,替换 base64 编码的名为Picture
的二进制标量项目属性。此示例还在Document
类的相同实例中,为名为RelatedPictures
的 base64 编码二进制集项目属性执行相同的操作。item.DecodeBase64Attributes("Picture", "RelatedPictures");
更多信息
有关使用 DynamoDB 编程 JSON 的更多信息和示例Amazon SDK for .NET,请参阅: