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

如何使用JSONata合并同key字典并补全缺失值?

使用JSONata合并两个字典的键值对

现有如下JSON数据:

{
 "First": {
          "example1": [
            {
              "key": "A",
              "value_1": 5
            },
            {
              "key": "B",
              "value_1": 1
            },
            {
              "key": "C",
              "value_1": 6
            },
            {
              "key": "D",
              "value_1": 8
            },
            {
              "key": "E",
              "value_1": 2
            }
         ]
 },
 "Second":{
          "example2": [
            {
              "key": "A",
              "value_2": 2
            },
            {
              "key": "B",
              "value_2": 1
            },
            {
              "key": "C",
              "value_2": 1
            }
         ]
 }
}

期望得到按key合并的结果,若某个key没有对应的value_2则设为0:

{
 "Result":[
            {
              "key": "A",
              "value_1": 5,
              "value_2": 2
            },
            {
              "key": "B",
              "value_1": 1,
              "value_2": 1
            },
            {
              "key": "C",
              "value_1": 6,
              "value_2": 1
            },
            {
              "key": "D",
              "value_1": 8,
              "value_2": 0
            },
            {
              "key": "E",
              "value_1": 2,
              "value_2": 0
            }
         ]
 }

JSONata实现代码

{
  "Result": First.example1.(
    $merge([
      $,
      { "value_2": $lookup($reduce(Second.example2, {}, ($acc, $item) => $merge([$acc, {$item.key: $item.value_2}])), key, 0) }
    ])
  )
}

代码说明

  • 先把Second.example2的数组转换成键值对对象:用每个元素的key作为键,对应的value_2作为值,这样能快速通过key查找对应值。
  • 遍历First.example1的每一项,将原元素与新生成的value_2字段合并:通过$lookup从上述键值对对象中获取当前key对应的value_2,找不到则返回默认值0。
  • 最终将所有合并后的元素整理到Result数组中。

内容的提问来源于stack exchange,提问作者Imaginary-Pea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:05:24