

适用于 JavaScript 的 AWS SDK v2 已终止支持。建议您迁移到 [适用于 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 对象表示法 (JavaScript Object Notation)* 的缩写，但 JSON 的格式独立于任何编程语言。

SDK for JavaScript 在发出请求时使用 JSON 将数据发送到服务对象，并以 JSON 格式从服务对象接收数据。有关 JSON 的更多信息，请参阅 [json.org](https://json.org)。

![\[显示 JSON 的一般格式和组成部分。\]](http://docs.aws.amazon.com/zh_cn/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>

以下是一个简单 JSON 示例，用于定义对 Lambda 服务对象的调用的参数。

```
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 对象，在此例中是描述指定 Amazon S3 桶的当前 CORS 配置的 JSON。

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