

 適用於 .NET 的 AWS SDK V3 已進入維護模式。

我們建議您遷移至 [適用於 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。如需如何遷移的其他詳細資訊和資訊，請參閱我們的[維護模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

**注意**  
本主題中的資訊專屬於以 .NET Framework 和 3.3 適用於 .NET 的 AWS SDK 版及更早版本為基礎的專案。

使用 Amazon DynamoDB 時， 適用於 .NET 的 AWS SDK 支援 JSON 資料。這可讓您更輕鬆地從 DynamoDB 資料表取得 JSON 格式的資料，並將 JSON 文件插入其中。

**Topics**
+ [以 JSON 格式從 DynamoDB 資料表取得資料](#dynamodb-json-get-table-data)
+ [將 JSON 格式資料插入 DynamoDB 資料表](#dynamodb-json-insert-table-data)
+ [DynamoDB 資料類型轉換為 JSON](#dynamodb-json-datatypes)
+ [詳細資訊](#dynamodb-json-more-info)

## 以 JSON 格式從 DynamoDB 資料表取得資料
<a name="dynamodb-json-get-table-data"></a>

下列範例顯示如何從 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` 方法使用目標項目的雜湊和範圍主索引鍵。為了決定要從中取得項目的資料表， `Table` 類別的 `LoadTable`方法會使用 DynamoDB 中 `AmazonDynamoDBClient`類別的執行個體和目標資料表的名稱。

## 將 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);
```

在上述範例中，`Document` 類別的 `FromJson` 方法將 JSON 格式字串轉換到項目。項目是透過 `Table` 類別的 `PutItem` 方法插入到資料表中，其使用包含項目的 `Document` 類別的執行個體。若要判斷要插入項目的資料表，會呼叫 `Table`類別的 `LoadTable` 方法，在 DynamoDB 中指定 `AmazonDynamoDBClient`類別的執行個體和目標資料表的名稱。

## 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 字串或字串清單。

  在此案例中，您必須呼叫的 `Document` 類別的 `DecodeBase64Attributes` 方法，使用正確的二進位代碼取代以 base64 編碼的 JSON 資料。在以下範例中，在名為 `Picture` 之 `Document` 類別的執行個體中，使用正確的二進位代碼取代以 base64 編碼的二進位純量項目屬性。此範例也在名為 `RelatedPictures` 之 `Document` 類別的相同執行個體中，針對以 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/) 