You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JOLT将JSON内数组拆分为多行并过滤无效数据?

使用JOLT拆分JSON数组并过滤无效条目

需求概述

需要完成两个核心操作:

  • 将JSON中的数组元素拆分为独立的JSON对象(多行输出)
  • 过滤两类无效条目:
    • 原数据中没有stations数组的条目
    • stations数组元素中缺少stationname字段的条目

输入示例

[
  {
    "id": "1",
    "stations": [
      {
        "stationname": "Station A",
        "code": "A01"
      },
      {
        "code": "B02"
      }
    ]
  },
  {
    "id": "2"
  },
  {
    "id": "3",
    "stations": [
      {
        "stationname": "Station C",
        "code": "C03"
      }
    ]
  }
]

预期输出示例

[
  {
    "id": "1",
    "stationname": "Station A",
    "code": "A01"
  },
  {
    "id": "3",
    "stationname": "Station C",
    "code": "C03"
  }
]

JOLT转换规范

[
  // 展开数组并关联上层id
  {
    "operation": "shift",
    "spec": {
      "*": {
        "stations": {
          "*": {
            "@(2,id)": "[&1].id",
            "*": "[&1].&"
          }
        }
      }
    }
  },
  // 过滤缺少stationname的条目
  {
    "operation": "filter",
    "spec": {
      "*": {
        "stationname": "notNull"
      }
    }
  },
  // 清理空对象
  {
    "operation": "remove",
    "spec": {
      "*": {
        "": ""
      }
    }
  }
]

步骤说明

  1. Shift操作:遍历输入的每个顶级对象,将stations数组内的每个元素与上层的id字段绑定,生成包含id和数组元素字段的独立对象。@(2,id)用于向上两层获取id值,[&1]确保每个数组元素对应一个独立的数组索引。
  2. Filter操作:检查每个生成的对象是否存在非空的stationname字段,自动过滤掉不符合条件的条目(包括原数据中没有stations数组的对象,这类对象在Shift后会变成空对象)。
  3. Remove操作:彻底清理Shift过程中可能产生的空对象,保证输出结果干净。

内容的提问来源于stack exchange,提问作者casper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:52:12