

 AWS SDK for .NET V3 がメンテナンスモードになりました。

[AWS SDK for .NET 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 および AWS SDK for .NET バージョン 3.3 以前のプロジェクトに固有のものです。

は、Amazon DynamoDB を使用する際に JSON データ AWS SDK for .NET をサポートします。そのため、DynamoDB テーブルから JSON 形式のデータを取得したり、テーブルに JSON ドキュメントを挿入したりする操作を簡単に行えます。

**Topics**
+ [DynamoDB テーブルから JSON 形式のデータを取得する](#dynamodb-json-get-table-data)
+ [DynamoDB テーブルに JSON 形式のデータを挿入する](#dynamodb-json-insert-table-data)
+ [DynamoDB データ型の JSON への変換](#dynamodb-json-datatypes)
+ [詳細情報](#dynamodb-json-more-info)

## DynamoDB テーブルから JSON 形式のデータを取得する
<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` メソッドで `AmazonDynamoDBClient` クラスのインスタンスと DynamoDB の対象テーブルの名前を使用しています。

## DynamoDB テーブルに JSON 形式のデータを挿入する
<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 形式の文字列を項目に変換しています。項目は、`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 文字列または文字列のリストに変換されます。

  この場合は、`Document` クラスの `DecodeBase64Attributes` メソッドを呼び出して、base64 でエンコードされた JSON データを正しいバイナリ表現に置き換える必要があります。次の例では、`Document` クラスのインスタンスの `Picture` という名前の base64 でエンコードされたバイナリスカラー項目属性を、正しいバイナリ表現で置き換えています。また、この例では、`Document` クラスの同じインスタンスの `RelatedPictures` という名前の base64 でエンコードされたバイナリセット項目属性に対しても同じことを行っています。

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

## 詳細情報
<a name="dynamodb-json-more-info"></a>

を使用して DynamoDB で JSON をプログラミングする詳細と例については AWS SDK for .NET、以下を参照してください。
+  [DynamoDB JSON Support](https://aws.amazon.com/blogs/developer/dynamodb-json-support/) 
+  [Amazon DynamoDB Update - JSON, Expanded Free Tier, Flexible Scaling, Larger Items](https://aws.amazon.com/blogs/aws/dynamodb-update-json-and-more/) 