如何将内部字段映射到 jolt 中的同一个数组对象?

How can I map inner fields to the same array object in jolt?

有这个输入 json:

{
  "orderItems": [
    {
      "itemName": "Mozzz",
      "quantity": 1
    },
    {
      "itemName": "zer",
      "quantity": 0,
      "bar": {
        "arr": [
          {
            "meta_itemName": "Small Barqs2",
            "meta_quantity": 22
          }
        ]
      }
    }
  ]
}

我试图在 orderItems 对象数组中向上移动“meta_”前缀字段,消除 bararr 键.

我试过这个规格:

 [
  {
    "operation": "shift",
    "spec": {
      "orderItems": {
        "*": {
          "quantity": "basket_item[#2].quantity",
          "itemName": "basket_item[#2].itemName",
          "bar": {
            "arr": {
              "*": {
                "meta_itemName": "basket_item[#2].m2",
                "meta_quantity": "basket_item[#2].m3"
              }
            }
          }
        }
      }
    }
  }
]

但是重命名为 m2 和 m3 的字段不会保留在“zer”项中。

此规范应该适合您(使用 https://jolt-demo.appspot.com/ 测试)

[
  {
    "operation": "shift",
    "spec": {
      "orderItems": {
        "*": {
          "bar": {
            "arr": {
              "*": { "meta_*": "orderItems[&4].&" }
            }
          },
          "*": "orderItems[&1].&"
        }
      }
    }
  }
]

输入的输出:

{
  "orderItems" : [ {
    "itemName" : "Mozzz",
    "quantity" : 1
  }, {
    "itemName" : "zer",
    "quantity" : 0,
    "meta_itemName" : "Small Barqs2",
    "meta_quantity" : 22
  } ]
}