

终止支持通知：2025年9月15日， AWS 我们将停止对Amazon Lex V1的支持。2025 年 9 月 15 日之后，您将无法再访问 Amazon Lex V1 控制台或 Amazon Lex V1 资源。如果您使用的是 Amazon Lex V2，请改为参阅 [Amazon Lex V2 指南](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置复杂属性
<a name="context-mgmt-complex-attributes"></a>

会话和请求属性是属性和值的 string-to-string映射。在许多情况下，您可以使用字符串映射在客户端应用程序与自动程序之间传输属性值。但在某些情况下，您可能需要传输无法轻易转换为字符串映射的二进制数据或复杂结构。例如，以下 JSON 对象表示由美国人口最多的三个城市组成的数组：

```
{
   "cities": [
      {
         "city": {
            "name": "New York",
            "state": "New York",
            "pop": "8537673"
         }
      },
      {
         "city": {
            "name": "Los Angeles",
            "state": "California",
            "pop": "3976322"
         }
      },
      {
         "city": {
            "name": "Chicago",
            "state": "Illinois",
            "pop": "2704958"
         }
      }
   ]
}
```

这个数据数组不能很好地转换为 string-to-string地图。在这种情况下，您可以将对象转换为一个简单字符串，以便通过 [PostContent](API_runtime_PostContent.md) 和 [PostText](API_runtime_PostText.md) 操作将其发送给自动程序。

例如，如果您正在使用 JavaScript，则可以使用`JSON.stringify`操作将对象转换为 JSON，使用`JSON.parse`操作将 JSON 文本转换为 JavaScript 对象：

```
// To convert an object to a string.
var jsonString = JSON.stringify({{object}}, null, 2);
// To convert a string to an object.
var {{obj}} = JSON.parse({{JSON string}});
```

要通过`PostContent`操作发送会话属性，在将属性添加到请求标头之前，必须对这些属性进行 base64 编码，如以下 JavaScript代码所示：

```
var {{encodedAttributes}} = new Buffer({{attributeString}}).toString("base64");
```

您可以通过先将二进制数据转换为 base64 编码字符串、然后将该字符串作为会话属性中的值发送，来向 `PostContent` 和 `PostText` 操作发送二进制数据：

```
"sessionAttributes" : {
   "binaryData": "{{base64 encoded data}}"
}
```