使用 CSV 分析器将 CSV 文本解析为 JSON 对象

在流程中,事件或操作可以从文件或其他内容返回逗号分隔值 (CSV)。 在流程中添加 CSV 分析器节点,将 CSV 数据字符串转换为 JSON 对象。 然后,您可以使用 JSON 对象将 CSV 数据映射到流程中的后续操作。

首先要考虑的问题

事件或操作返回的 CSV 数据必须是纯文本,可以包含一个或多个表格格式的数据记录。 逗号 (,) 是数据字段唯一支持的分隔符。 因此,如果字段中的值包含逗号,该值必须用双引号 ("") 括起来。

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

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

下面的示例描述了多节点流程的一个部分,该部分使用 "方框检索文件 "操作来指定 CSV 文件的标识符,您要检索和解析该文件的内容。

图 1。 检索文件操作字段
方框 检索文件操作字段

要使 CSV 数据可在后续操作中进行映射,可在操作前插入 CSV 解析器节点,然后使用 CSV 解析器节点定义要解析的数据,并生成有效的 JSON 模式。

要插入和配置 CSV 分析器节点,请完成以下步骤。

  1. 单击 (+) 图标,转到工具箱选项卡,然后单击 CSV 分析器
    图 2。 从 "工具箱 "选项卡中选择 CSV 分析器
    从 "工具箱 "选项卡中选择 CSV 分析器
  2. 使用 CSV 输入字段来指明要解析上一个操作或事件中的哪些数据。 您可以映射到可用输入列表中显示的字段(可通过单击插入映射 插入映射图标 访问)。 通常情况下,这些数据是 CSV 文件的内容或文本正文中的其他 CSV 内容。 下面的示例显示了如何将数据映射到 Box 中的文件内容。
    图 3。 CSV 输入字段
    CSV 输入字段
  3. 展开 CSV 解析选项和数据模式部分,然后使用 CSV 示例字段指定代表 CSV 内容样本的纯文本数据。

    下面的示例显示了从 IBM API Connect® Management 服务器导出到 Box 的 CSV 文件中的数据示例。 CSV 文件包含与某个分析仪表盘相关联的 API 事件数据。 在本例中,您希望解析这些数据,以便使用 Gmail 或 Slack 向管理人员发送有关 API 或应用程序的相关分析信息。

    图 4: 示例 CSV 字段
    CSV 字段示例

    您可以从 CSV 内容中选择并复制一行或多行,然后将其粘贴到 " 示例 CSV "字段中。 如果 CSV 内容包含要在 App Connect 生成的 JSON 架构中定义为键的列标题,请确保在选择中包含标题行。 只有第一行用于分析模式的 CSV 格式。 示例 CSV 字段最多可输入 16,000 个字符。

  4. 如果在示例 CSV 中包含 CSV 标题,请选择 CSV 数据的第一行是标题复选框,以表示在生成的模式中必须将列标题作为键进行解析。
    图 5. CSV 数据的第一行是标题复选框
    CSV 数据的第一行是标题复选框
  5. 要将 CSV 示例转换为 JSON 对象,请单击生成模式。 您可以在 JSON 模式字段中看到结果。
    带有 CSV 分析器节点的流程:生成 JSON 模式
    • 如果选择了 CSV 数据的第一行是标题复选框,则定义的列标题会被解析为键,稍后可以映射到这些键。
    • 如果不选择该复选框,则会生成一系列标有 field1, field2, ..., fieldN 的通用密钥供使用。 如有必要,您可以覆盖这些通用键,以指定其他标题字符串。

    您也可以绕过模式生成步骤,直接在 JSON 模式字段中输入有效的模式。 您还可以通过更新属性的类型属性值来修改键的数据类型。 例如,可以将 "type": "string" (如下例所示)更改为 "type": "number"

    
        ...
        "properties": {
          "bytes_received": {
            <strong>"type": "string"</strong>,
            "minLength": 1
          },
        ...
    

处理解析数据的方法

CSV 解析器节点的输出是一个数组。 因此,要在流程的后续节点中使用该输出,通常需要在 CSV 解析器节点后加入一个 For each 节点来遍历数组。 此外,您还可以使用 JSONata 来操作数组数据。