我怎样才能将内部字段映射到同一数组对象中?

问题描述

具有此输入json:

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

我正在尝试在orderItems对象数组内将“ Meta_”前缀字段上移,以消除 bar arr 键。

我尝试了这个规格:

 [
  {
    "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
  } ]
}