

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

# 類型系統 （回應映射）
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-responses"></a>

從 DynamoDB 接收回應時， AWS AppSync 會自動將其轉換為 GraphQL 和 JSON 基本類型。DynamoDB 中的每個屬性都會解碼，並在回應映射內容中傳回。

例如，如果 DynamoDB 傳回下列項目：

```
{
    "id" : { "S" : "1234" },
    "name" : { "S" : "Nadia" },
    "age" : { "N" : 25 }
}
```

然後， AWS AppSync DynamoDB 解析程式會將其轉換為 GraphQL 和 JSON 類型，如下所示：

```
{
    "id" : "1234",
    "name" : "Nadia",
    "age" : 25
}
```

本節說明 AWS AppSync 如何轉換下列 DynamoDB 純量、文件和設定類型：

**字串類型 `S` **  
單一字串值。DynamoDB 字串值會以字串傳回。  
例如，如果 DynamoDB 傳回下列 DynamoDB 字串值：  

```
{ "S" : "some string" }
```
AWS AppSync 將其轉換為字串：  

```
"some string"
```

**字串集類型 `SS` **  
字串值的集合。DynamoDB 字串集值會傳回為字串清單。  
例如，如果 DynamoDB 傳回下列 DynamoDB 字串集值：  

```
{ "SS" : [ "first value", "second value", ... ] }
```
AWS AppSync 將其轉換為字串清單：  

```
[ "+1 555 123 4567", "+1 555 234 5678" ]
```

**數字類型 `N` **  
單一數值。DynamoDB 數值會以數字傳回。  
例如，如果 DynamoDB 傳回下列 DynamoDB 數字值：  

```
{ "N" : 1234 }
```
AWS AppSync 將其轉換為數字：  

```
1234
```

**數字集類型 `NS` **  
數值的集合。DynamoDB 數字集值會以數字清單傳回。  
例如，如果 DynamoDB 傳回下列 DynamoDB 數字集值：  

```
{ "NS" : [ 67.8, 12.2, 70 ] }
```
AWS AppSync 將其轉換為數字清單：  

```
[ 67.8, 12.2, 70 ]
```

**二進位類型 `B` **  
二進位值。DynamoDB 二進位值會以字串傳回，其中包含該值的 base64 表示法。  
例如，如果 DynamoDB 傳回下列 DynamoDB 二進位值：  

```
{ "B" : "SGVsbG8sIFdvcmxkIQo=" }
```
AWS AppSync 將其轉換為包含 base64 表示值的字串：  

```
"SGVsbG8sIFdvcmxkIQo="
```
請注意，二進位資料以 base64 編碼配置編碼，如 [RFC 4648](https://tools.ietf.org/html/rfc4648) 和 [RFC 2045](https://tools.ietf.org/html/rfc2045) 中所定義。

**二進位集類型 `BS` **  
二進位值的集合。DynamoDB 二進位集值會以包含 base64 表示值的字串清單傳回。  
例如，如果 DynamoDB 傳回下列 DynamoDB 二進位集值：  

```
{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }
```
AWS AppSync 將其轉換為包含 base64 表示值的字串清單：  

```
[ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ]
```
請注意，二進位資料以 base64 編碼配置編碼，如 [RFC 4648](https://tools.ietf.org/html/rfc4648) 和 [RFC 2045](https://tools.ietf.org/html/rfc2045) 中所定義。

**布林類型 `BOOL` **  
布林值。DynamoDB 布林值會以布林值傳回。  
例如，如果 DynamoDB 傳回下列 DynamoDB 布林值：  

```
{ "BOOL" : true }
```
AWS AppSync 將其轉換為布林值：  

```
true
```

**清單類型 `L` **  
任何其他支援的 DynamoDB 值清單。DynamoDB 清單值會傳回為值清單，其中每個內部值也會轉換。  
例如，如果 DynamoDB 傳回下列 DynamoDB 清單值：  

```
{ "L" : [
      { "S"  : "A string value" },
      { "N"  : 1 },
      { "SS" : [ "Another string value", "Even more string values!" ] }
   ]
}
```
AWS AppSync 將其轉換為轉換值的清單：  

```
[ "A string value", 1, [ "Another string value", "Even more string values!" ] ]
```

**映射類型 `M` **  
任何其他支援的 DynamoDB 值的金鑰/值集合。DynamoDB Map 值會以 JSON 物件傳回，其中每個索引鍵/值也會轉換。  
例如，如果 DynamoDB 傳回下列 DynamoDB Map 值：  

```
{ "M" : {
      "someString" : { "S"  : "A string value" },
      "someNumber" : { "N"  : 1 },
      "stringSet"  : { "SS" : [ "Another string value", "Even more string values!" ] }
   }
}
```
AWS AppSync 將其轉換為 JSON 物件：  

```
{
   "someString" : "A string value",
   "someNumber" : 1,
   "stringSet"  : [ "Another string value", "Even more string values!" ]
}
```

**Null 類型 `NULL` **  
null 值。  
例如，如果 DynamoDB 傳回下列 DynamoDB Null 值：  

```
{ "NULL" : null }
```
AWS AppSync 將其轉換為 null：  

```
null
```