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

如何通过JOLT将嵌套JSON数组转换为简化数组?

正确的JOLT转换方案与学习资源推荐

一、正确的JOLT转换规则

以下是实现需求的JOLT转换规则,核心是通过shift操作将嵌套的addr_info数组展开,并与上层的网卡基础字段合并:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "pim_network": {
          "*": {
            "addresses": {
              "*": {
                "addr_info": {
                  "*": {
                    "@(2,ifindex)": "pim_network.[&1].ifindex",
                    "@(2,ifname)": "pim_network.[&1].ifname",
                    "@(2,address)": "pim_network.[&1].address",
                    "broadcast": "pim_network.[&1].broadcast",
                    "@(2,broadcast)": "pim_network.[&1].broadcast",
                    "family": "pim_network.[&1].family",
                    "local": "pim_network.[&1].local",
                    "prefixlen": "pim_network.[&1].prefixlen",
                    "label": "pim_network.[&1].label"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

规则说明:

  • @(2,ifindex):通过路径引用,从当前层级(addr_info的数组元素)向上追溯2层,获取网卡的ifindex字段,同理@(2,ifname)、@(2,address)都是引用上层网卡的基础信息
  • &1:表示当前层级(addr_info的数组元素)的索引,用它来作为目标数组pim_network的索引,确保每个addr_info元素生成独立的条目
  • broadcast字段优先使用addr_info内的取值(如果存在),否则 fallback 到上层网卡的broadcast值,通过先后顺序实现优先级覆盖

二、JOLT学习资源推荐

  • JOLT官方Wiki:官方维护的文档,包含所有操作类型(shift、default、remove等)的详细说明,以及&、@等路径引用符号的用法,是最权威的学习材料
  • 实操导向的社区教程:很多开发者会分享实际场景的转换案例,比如数组展开、字段合并、嵌套结构扁平化这类常见需求,通过案例更容易理解规则逻辑
  • 在线调试工具:使用开源的JOLT调试工具(可本地部署),实时测试转换规则,通过边写边调的方式快速掌握语法,避免踩坑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:25:07