

버전 4(V4) AWS SDK for .NET 가 릴리스되었습니다.

변경 사항 해제 및 애플리케이션 마이그레이션에 대한 자세한 내용은 [마이그레이션 주제를](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 및 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)
+ [JSON으로 DynamoDB 데이터 형식 변환](#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` 메서드는 DynamoDB에서 `AmazonDynamoDBClient` 클래스의 인스턴스와 대상 테이블의 이름을 사용합니다.

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

앞의 예제에서는 `FromJson` 클래스의 `Document` 메서드가 JSON 형식 문자열을 항목으로 변환합니다. 해당 항목은 이 항목을 포함하는 `PutItem` 클래스의 인스턴스를 사용하는 `Table` 클래스의 `Document` 메서드를 통해 테이블에 삽입됩니다. 항목을 삽입할 테이블을 결정하기 위해 `Table` 클래스의 `LoadTable` 메서드가 호출되어 DynamoDB에서 `AmazonDynamoDBClient` 클래스의 인스턴스와 대상 테이블의 이름을 지정합니다.

## JSON으로 DynamoDB 데이터 형식 변환
<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`라는 `Picture` 클래스의 인스턴스에 있는 base64로 인코딩된 이진수 스칼라 항목 속성을 정확한 이진수 표시로 바꿉니다. 또한 이 예제에서는 다음과 같이 `Document`라는 `RelatedPictures` 클래스의 동일한 인스턴스에 있는 base64로 인코딩된 이진수 세트 항목 속성에 대해 동일한 작업을 합니다.

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

## 추가 정보
<a name="dynamodb-json-more-info"></a>

를 사용하여 DynamoDB로 JSON을 프로그래밍하는 방법에 대한 자세한 내용과 예제는 다음을 AWS SDK for .NET참조하세요.
+  [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/) 