使用 JSON 分析器将 JSON 字符串解析为 JSON 对象

您可以使用 JSON 解析器将以 JSON 格式写入的字符串数据转换为表示该字符串的 JSON 对象。 JSON 解析器会生成一个模式,其键包含在字段列表中,可映射到流程中的后续节点。

当您在 App Connect 中创建事件驱动或 API 流程时,通常会通过映射字段将事件、操作或工具箱节点的响应或输出用作后续操作的输入。 在使用 JavaScript Object Notation (JSON) 返回数据的某些情况下,数据是以 JSON 格式编写的字符串形式提供的。 要在后续操作中映射这些数据,必须首先使用 App Connect 的内置 JSON 分析器将数据转换为表示字符串的 JSON 对象。

JSON 解析器生成的模式格式为一组标准的逗号分隔键和值对,这些键和值对由大括号包围 {}。 键定义为字符串,其值可以是以下有效的 JSON 数据类型之一:字符串、数字、对象、数组、布尔或空。 当这些键生成时,它们会被包含在可供映射的字段列表中,供您在后续操作中点击" 插入 插入映射图标 映射"时使用。

定义要解析的数据并生成有效的 JSON 模式

您可以使用 JSON 分析器来解析来自各种应用程序的 JSON 字符串。 不过,典型的用例是使用 HTTP invoke 操作来发出 GET、POST、PUT、PATCH、DELETE 或 HEAD 请求,并从 HTTP 端点返回响应。

下面的示例描述了多节点流程中的 HTTP invoke 操作。 此处正在向位于的 http://httpbin.orgHTTP 客户端测试服务发起GET请求。

图 1。 HTTP 调用操作的字段输入示例
HTTP 调用操作的字段输入示例

要使响应标头和响应正文可在后续操作中进行映射,必须在添加操作前插入一个 JSON 解析器节点。 然后,您可以使用该节点来定义要解析的数据,并生成有效的JSON模式。 您可以按照以下步骤插入和配置节点:

  1. 单击 (+),转到工具箱选项卡,然后单击 JSON 解析器
    图 2。 从 "工具箱 "选项卡中选择 JSON 分析器
    从 "工具箱 "选项卡中选择 JSON 分析器
  2. 使用 JSON 输入字段指定必须解析前一个操作或事件中的哪些数据。
    JSON 输入字段
    您可以通过以下方式填写JSON输入字段:
    • 您可以通过点击 “插入映射 插入映射图标”来映射到可用输入列表中显示的字段。
      图 3。 显示映射字段的 JSON 输入条目
      显示映射字段的 JSON 输入条目
    • 您可以将文本与映射字段相结合。
      图 4: 显示文本和映射字段组合的 JSON 输入条目
      JSON 输入条目显示文本和映射字段的组合
      图 5. JSON 输入条目,显示文本和映射字段的另一种组合
      JSON 输入条目显示文本和映射字段的另一种组合
    • 解析时, JSON 输入字段中的条目必须生成有效的 JSON。 为防止出现运行时错误,从前面的事件或操作中包含的任何映射字段都必须具有可转换为有效输入的值。 根据映射字段的数据类型,可能还需要用双引号或大括号括起来 {}
      • 如果先前 HTTP 操作 Response body 返回的JSON格式为 {"name":"Bob", "age":"99"},则 JSON输入项解析 {"responseBody": Response body} 为以下有效JSON: {"responseBody": {"name":"Bob", "age":"99″}}
      • 如果之前 HTTP 操作的 Response body 是以纯文本 Blob 返回的,则 {"responseBody": Response body}JSON 输入条目会产生无效的 JSON: {"responseBody": Blob}

        为使 JSON 有效, JSON 输入条目必须指定为 {"responseBody": "Response body"} ,即 Response body 必须用双引号括起来。 即使没有返回响应,JSON 也被认为是有效的,因为 JSON 输入条目解析为 {"responseBody": ""}

      • 如果先前 HTTP 操作的字 Request headers (JSON format) 段没有值, 则JSON输入项将 Request headers (JSON format) 解析为空值。
      • 如果先前 HTTP 操作的字 Request headers (JSON format) 段没有值, 则JSON输入项会 {"headers": Request headers (JSON format)} 生成无效的JSON: {"headers":}

        要使 JSON 有效,必须将 JSON 输入项指定为 {"headers": {Request headers (JSON format)}} (即 Request headers (JSON format) 必须用大括号括起)。

  3. 展开输出模式部分,并使用示例 JSON 字段指定您期望返回的示例 JSON(该字段必须转换为 JSON 对象)。 以下示例展示了对前文提及的 HTTP 客户端测试服务( http://httpbin.org/get )进行GET调用时返回的JSON样本。
    图 6. JSON 字段示例
    JSON 字段示例
    您可以通过以下方式配置示例 JSON 字段
    • 您可以复制网页服务器或API调用返回的示例响应,例如,将其粘贴到此字段中。
    • 您可以直接在该字段中输入 JSON 字符串。 例如, {"name":"Bob","age":"99″}
    • 示例 JSON 字段最多可接受 16,000 个字符。 该功能仅适用于较小的 API 响应,因为模式生成可能会耗费大量资源并导致性能问题。 对于较大的响应,您可以根据需要使用外部工具来生成模式。 模式生成后,可直接粘贴到 JSON 模式字段 (如下一步所示)。
  4. 要将 "示例 JSON "转换为 JSON 对象,请单击 " 生成模式 "。 您可以在 JSON 模式字段中看到结果。
    图 7. 包含JSON解析器节点的流程生成的JSON模式
    带有 JSON 分析器节点的流程:生成 JSON 模式
    提示: 您也可以绕过模式生成步骤,直接在 JSON 模式字段中输入有效模式。

在流程中添加另一个目标应用程序和相应的操作时,您可以将 JSON 模式中的键视为可以映射到的字段。