

的版本 4 (V4) 适用于 .NET 的 AWS SDK 已经发布！

有关重大更改和迁移应用程序的信息，请参阅[迁移主题](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# Amazon DynamoDB 中的 JSON 支持
<a name="dynamodb-json"></a>

**注意**  
本主题中的信息特定于基于.NET Framework 和 3.3 及更早 适用于 .NET 的 AWS SDK 版本的项目。

使用亚马逊 DynamoDB 时 适用于 .NET 的 AWS SDK 支持 JSON 数据。这使您能够更轻松地从 DynamoDB 中获取 JSON 格式的数据以及将 JSON 文档插入到其中。

**Topics**
+ [从 DynamoDB 表以 JSON 格式获取数据](#dynamodb-json-get-table-data)
+ [将 JSON 格式数据插入 DynamoDB 表](#dynamodb-json-insert-table-data)
+ [DynamoDB 数据类型转换为 JSON](#dynamodb-json-datatypes)
+ [更多信息](#dynamodb-json-more-info)

## 从 DynamoDB 表以 JSON 格式获取数据
<a name="dynamodb-json-get-table-data"></a>

以下示例显示了如何以 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的主键。为确定要从中获取项目的表，`Table` 类的 `LoadTable` 方法使用 `AmazonDynamoDBClient` 类的实例以及 DynamoDB 中的目标表名。

## 将 JSON 格式数据插入 DynamoDB 表
<a name="dynamodb-json-insert-table-data"></a>

以下示例演示如何使用 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` 类的实例。为确定要插入项目的表，调用 `Table` 类的 `LoadTable` 方法，并指定 `AmazonDynamoDBClient` 类的实例以及 DynamoDB 中的目标表名。

## DynamoDB 数据类型转换为 JSON
<a name="dynamodb-json-datatypes"></a>

当您调用 `Document` 类的 `ToJson` 方法，然后在生成的 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");
  ```

## 更多信息
<a name="dynamodb-json-more-info"></a>

有关使用 DynamoDB 编程 JSON 的更多信息和示例， 适用于 .NET 的 AWS SDK请参阅：
+  [DynamoDB JSON 支持](https://aws.amazon.com/blogs/developer/dynamodb-json-support/) 
+  [Amazon DynamoDB 更新 - JSON、更广泛的免费套餐、灵活扩展、更大的项目](https://aws.amazon.com/blogs/aws/dynamodb-update-json-and-more/) 