

 適用於 JavaScript 的 AWS SDK v2 已end-of-support。我們建議您遷移至 [適用於 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。如需如何遷移的其他詳細資訊和資訊，請參閱此[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

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

# 使用 JSON
<a name="working-with-json"></a>

JSON 是一種人類和機器皆可讀取的資料交換格式。雖然 JSON 這個名稱是 *JavaScript 物件標記法*的縮寫，但 JSON 格式與任何程式設計語言互不相關。

適用於 JavaScript 的 SDK 會在提出請求時，使用 JSON 將資料傳送至服務物件，並以 JSON 的形式從服務物件接收資料。如需 JSON 的詳細資訊，請參閱 [json.org](https://json.org)。

![\[顯示 JSON 的一般格式和部分結構。\]](http://docs.aws.amazon.com/zh_tw/sdk-for-javascript/v2/developer-guide/images/json-format.png)


JSON 代表資料的方式有兩種：
+ *物件*，這是一種無順序的名稱/值對。系統會在左 (`{`) 和右 (`}`) 括號內定義物件。每個名稱/值對皆以名稱開始，接著是冒號，然後是值。名稱/值對則是以逗號分隔。
+ *陣列*是一種排序的值集合。系統會在左 (`[`) 和右 (`]`) 括號內定義陣列。陣列中的項目皆是以逗號分隔。

下方 JSON 物件範例內含物件陣列，而這些物件代表卡片遊戲的卡片。每張卡片皆由兩個名稱/值對所定義；一個會指定可識別該卡片的唯一值，另一個則會指定可指向對應卡片映像的 URL。

```
var cards = [{"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"}];
```

## 做為服務物件參數的 JSON
<a name="json-as-parameters-passed"></a>

以下是用於定義 Lambda 服務物件呼叫參數的簡單 JSON 範例。

```
var pullParams = {
   FunctionName : 'slotPull',
   InvocationType : 'RequestResponse',
   LogType : 'None'
};
```

`pullParams` 物件是由三個名稱/值對所定義，系統會在左右括號內以逗號分隔該物件。提供參數給服務物件方法呼叫時，名稱會依欲呼叫之服務物件方法的參數名稱而定。叫用 Lambda 函數時，`FunctionName`、 `InvocationType`和 `LogType`是用來在 Lambda 服務物件上呼叫 `invoke`方法的參數。

將參數傳遞至服務物件方法呼叫時，請將 JSON 物件提供給方法呼叫，如下列叫用 Lambda 函數的範例所示。

```
lambda = new AWS.Lambda({region: 'us-west-2', apiVersion: '2015-03-31'});
// create JSON object for service call parameters
var pullParams = {
   FunctionName : 'slotPull',
   InvocationType : 'RequestResponse',
   LogType : 'None'
};                
// invoke Lambda function, passing JSON object
lambda.invoke(pullParams, function(err, data) {
   if (err) {
      console.log(err);
   } else {
      console.log(data);
   }
});
```

## 傳回 JSON 格式的資料
<a name="json-as-returned-data"></a>

JSON 提供了一種標準做法，能夠在需要同時傳送多個值的應用程式部分間傳遞資料。一般來說，API 中的用戶端類別方法會在傳遞至回呼函數的 `data` 參數內傳回 JSON。例如，以下是對 Amazon S3 用戶端類別 `getBucketCors`方法的呼叫。

```
// call S3 to retrieve CORS configuration for selected bucket
s3.getBucketCors(bucketParams, function(err, data) {
  if (err) {
    console.log(err);
  } else if (data) {
    console.log(JSON.stringify(data));
  }
});
```

的值`data`是 JSON 物件，在此範例中，JSON 描述指定 Amazon S3 儲存貯體的目前 CORS 組態。

```
{
   "CORSRules": [
      {
          "AllowedHeaders":["*"],
          "AllowedMethods":["POST","GET","PUT","DELETE","HEAD"],
          "AllowedOrigins":["*"],
          "ExposeHeaders":[],
          "MaxAgeSeconds":3000
      }
   ]
}
```