问题描述
具有此输入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
} ]
}