

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

# 在 Step Functions 中处理输入和输出
<a name="concepts-input-output-filtering"></a>

**使用变量管理状态和 JSONata**  
Step Functions 最近添加了变量 JSONata ，用于管理状态和转换数据。  
要了解更多信息，请阅读博客文章 “[使用变量简化开发者体验 JSONata ” 和 Amazon Step Functions](https://www.amazonaws.cn/blogs/compute/simplifying-developer-experience-with-variables-and-jsonata-in-aws-step-functions/) 

当 Step Functions 执行收到 JSON 输入时，它会将该数据传递到工作流中的第一个状态作为输入。

使用 JSONata，您可以从中检索状态输入`$states.input`。您的状态机执行还会在 [Context 对象](input-output-contextobject.md) 中提供该初始输入数据。您可以在工作流中的任意步骤从 `$states.context.Execution.Input` 中检索原始状态机输入。

 当状态退出时，其输出可用于状态机中的*下一个*状态。除非您**修改**状态输出，否则默认情况下，您的状态输入将作为状态输出来传递。对于后续步骤中可能需要的数据，可以考虑将其存储在变量中。有关更多信息，请参阅[使用变量在状态之间传递数据](workflow-variables.md)。

**QueryLanguage 推荐**  
对于新的状态机，我们建议使用 JSONata 查询语言。在未指定查询语言的状态机中，为了 JSONPath 向后兼容，状态机默认为。您必须选择使用 JSONata 您的状态机或单个状态。

**使用处理输入和输出 JSONata**

使用 JSONata 表达式，您可以选择和转换数据。在 `Arguments` 字段中，您可以自定义发送给操作的数据。结果可以在 `Output` 字段中转换为自定义状态输出。您也可以将数据存储在 `Assign` 字段的变量中。有关更多信息，请参阅[使用转换数据 JSONata](transforming-data.md)。

下图显示了 JSON 信息如何在 JSONata 任务状态中移动。

![\[Diagram showing JSONata task state flow with input, arguments, output, and action components.\]](http://docs.amazonaws.cn/step-functions/latest/dg/images/vars-jsonata.png)


**使用处理输入和输出 JSONPath**

**管理状态和转换数据**  
了解有关[使用变量在状态之间传递数据](workflow-variables.md)和[使用转换数据](transforming-data.md)的信息 JSONata。

对于使用的状态机 JSONPath，以下字段控制从一个状态到另一个状态的数据流：`InputPath``Parameters`、`ResultSelector`、`ResultPath`、和`OutputPath`。每个 JSONPath 字段都可以在 JSON 在工作流程中的每个状态中移动时对其进行操作。

JSONPath 字段可以使用[路径](amazon-states-language-paths.md)从输入或结果中选择 JSON 的各个部分。路径是以 `$` 开头的字符串，标识 JSON 文本内的节点。Step Functions 路径使用[JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)语法。

下图显示了 JSON 信息如何在 JSONPath 任务状态中移动。`InputPath`选择要传递给`Task`状态任务的 JSON 输入部分（例如，Amazon Lambda函数）。您可以调整在 `Parameters` 字段中发送给操作的数据。然后，借助 `ResultSelector`，您可以选择要转移的操作结果部分。`ResultPath` 然后选择要传递给输出的状态输入和任务结果的组合。`OutputPath` 可以筛选 JSON 输出以进一步限制传递给输出的信息。

![\[筛选器顺序： InputPath、参数 ResultSelector、 ResultPath、和 OutputPath。\]](http://docs.amazonaws.cn/step-functions/latest/dg/images/vars-jsonpath.png)


**Topics**
+ [使用变量在状态之间传递数据](workflow-variables.md)
+ [在 Step Functi JSONata ons 中使用转换数据](transforming-data.md)
+ [在 Step Functions 中从上下文对象访问执行数据](input-output-contextobject.md)
+ [使用 JSONPath 路径](amazon-states-language-paths.md)
+ [在 Step Functions 工作流中操作参数](input-output-inputpath-params.md)
+ [示例：在 Step Functions 工作流中操作带路径的状态数据](input-output-example.md)
+ [在 Step Functions ResultPath 中使用指定状态输出](input-output-resultpath.md)
+ [Step Functions 中的 Map 状态输入和输出字段](input-output-fields-dist-map.md)