json 如何通过jolt将一个对象的键和值添加到数组中的每个对象

gmol1639  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(218)

我正在使用jolt,并且我有一个input对象,我想从一个属性中取出键,并将它们插入到另一个属性中数组的每个对象中:
我的意见:

{
  "jolt_marketplaceMetadata": {
    "NAN_KEY": 1,
    "TEMP": 3
  },
  "jolt_attributes": [
    {
      "name": "HELLO",
      "yyup": 3
    },
    {
      "huh": "please",
      "work": 2
    }
  ]
}

我的目标是:

"jolt_attributes": [
    {
      "name": "HELLO",
      "yyup": 3,
      "NAN_KEY": 1,
      "TEMP": 3
    },
    {
      "huh": "please",
      "work": 2,
      "NAN_KEY": 1,
      "TEMP": 3
    }
  ]

我尝试了几个不同的spec数组,已经非常接近了,但是我似乎无法弄清楚如何在不合并数组中每个对象的所有数据的情况下获取值:

[
  {
    "operation": "shift",
    "spec": {
      "jolt_attributes": {
        "*": {
          "*": "jolt_attributes[&1].&",
          "@(2,jolt_marketplaceMetadata)": "jolt_attributes[&1]"
        }
      }
    }
  }
]

它给出了:

{
  "jolt_attributes": [
    {
      "NAN_KEY": 1,
      "TEMP": 3,
      "name": "HELLO",
      "yyup": 3,
      "huh": "please",
      "work": 2
    },
    {
      "NAN_KEY": 1,
      "TEMP": 3,
      "name": "HELLO",
      "yyup": 3,
      "huh": "please",
      "work": 2
    }
  ]
}

它添加jolt_marketplaceMetadata中的键,但每次也会将每个数组对象中的所有键/值合并在一起。
有什么想法吗?

nbysray5

nbysray51#

您可以使用以下shift转换规范

[
  {
    "operation": "shift",
    "spec": {
      "jolt_attributes": {
        "*": {
          "*": "&2[#2].&",
          "@2,jolt_marketplaceMetadata.NAN_KEY": "&2[#2].NAN_KEY",
          "@2,jolt_marketplaceMetadata.TEMP": "&2[#2].TEMP"
        }
      }
    }
  }
]

其中

  • &2复制数组的密钥("jolt_attributes"
  • [#2]在遍历树2层(一次用于冒号,一次用于左大括号)后循环遍历该数组的索引,并生成数组形式(此处为 * 对象数组 *)的结果

相关问题