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

Jolt实操:如何为嵌套JSON添加字段及实现条件覆写

Jolt实战:嵌套JSON字段添加与条件覆写

问题1:如何为嵌套JSON结构添加字段?

要给嵌套对象添加字段,核心是用Jolt的移位(shift)操作定位目标嵌套路径,同时引用外部字段的值。

以你的需求为例,需将顶层SrcDo的值以sos为键,添加到PartyPostalAddress.item[*].PostalAddress下,可通过路径映射实现:

[
  {
    "operation": "shift",
    "spec": {
      "PartyPostalAddress": {
        "item": {
          "*": {
            "LNCd": "PartyPostalAddress.item[&1].LNCd",
            "PostalAddress": {
              "@2,SrcDo": "PartyPostalAddress.item[&3].PostalAddress.sos", // 向上回溯2层获取顶层SrcDo的值
              "*": "PartyPostalAddress.item[&3].PostalAddress.&" // 保留PostalAddress原有字段
            }
          }
        }
      }
    }
  }
]

这里@2,SrcDo表示从当前节点(PostalAddress)向上跳2层到顶层,抓取SrcDo的值,再映射到目标路径的sos字段。

问题2:如何通过条件实现覆写操作?

条件覆写或字段过滤可结合Jolt的移位、修改操作实现:

  • 若要移除字段,直接在移位规则中不映射该字段即可实现隐式移除;
  • 若要基于字段值修改内容,可使用modify-overwrite-beta操作配合条件表达式。

比如你需求中输入的ewc和BlBdrCd被移除,就是通过移位规则不映射这两个字段实现的。如果需要更复杂的条件逻辑,示例如下:

[
  // 第一步:完成字段移位与添加
  {
    "operation": "shift",
    "spec": {
      "PartyPostalAddress": {
        "item": {
          "*": {
            "LNCd": "PartyPostalAddress.item[&1].LNCd",
            "PostalAddress": {
              "@2,SrcDo": "PartyPostalAddress.item[&3].PostalAddress.sos",
              "*": "PartyPostalAddress.item[&3].PostalAddress.&"
            }
          }
        }
      }
    }
  },
  // 第二步:条件覆写示例——若addrTyp为N则替换为Normal,否则保留原值
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "PartyPostalAddress": {
        "item": {
          "*": {
            "LNCd": {
              "addrTyp": ["=eq(@(1,addrTyp), 'N')", "Normal", "@(1,addrTyp)"]
            }
          }
        }
      }
    }
  }
]

完整实操解决方案

结合你的输入输出需求,最终Jolt规则如下(实现sos字段添加、ewc和BlBdrCd移除):

[
  {
    "operation": "shift",
    "spec": {
      "PartyPostalAddress": {
        "item": {
          "*": {
            "LNCd": "PartyPostalAddress.item[&1].LNCd",
            "PostalAddress": {
              "@2,SrcDo": "PartyPostalAddress.item[&3].PostalAddress.sos",
              "*": "PartyPostalAddress.item[&3].PostalAddress.&"
            }
          }
        }
      }
    }
  }
]

输入JSON

{
  "ewc":true,
  "PartyPostalAddress": {
    "item": [
      {
        "BlBdrCd": {
          "addrTyp": "N"
        },
        "LNCd": {
          "addrTyp": "N"
        },
        "PostalAddress": {
          "SrcAddrLn1": "1 KWN",
          "SrcAddrLn2": "Second Floor",
          "SrcAddrLn3": "1569 WQAS Blvd"
        }
      }
    ]
  },
  "SrcDo": "N"
}

输出JSON

{
  "PartyPostalAddress": {
    "item": [
      {
        "LNCd": {
          "addrTyp": "N"
        },
        "PostalAddress": {
          "sos": "N",
          "SrcAddrLn1": "1 KWN",
          "SrcAddrLn2": "Second Floor",
          "SrcAddrLn3": "1569 WQAS Blvd"
        }
      }
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:08:23