我必须转换的输入JSON如下:
{
"Business": [
{
"Label": "Entertainment",
"category": "Advert",
"weight": "",
"types": [
"T1",
"T2"
]
},
{
"Label": "FMCG",
"category": "Campaign",
"weight": "",
"types": [
"T9",
"T10"
]
}
]
}
预期产出:
{
"Business": [
{
"Label": "Entertainment",
"category": "Advert",
"weight": "",
"types": "T1"
},
{
"Label": "Entertainment",
"category": "Advert",
"weight": "",
"types": "T2"
},
{
"Label": "FMCG",
"category": "Campaign",
"weight": "",
"types": "T9"
},
{
"Label": "FMCG",
"category": "Campaign",
"weight": "",
"types": "T10"
}
]
}
我尝试过JOLT github帮助页面提供的不同JsonSpec。但我无法解决这个问题。任何帮助或指示将不胜感激。
答案 0 :(得分:6)
你必须进行两次轮班操作。
您希望根据“类型”数组中的条目数“复制”标签和类别。所以先做一个临时的“bizArray”。
还记录临时“typeArray”中具有重复标签和类别的“类型”,其与bizArray具有相同的索引。
在第二班中,“加入”两个并行数组“bizArray”和“typesArray”以获得最终数组。
规格
[
{
"operation": "shift",
"spec": {
"Business": {
"*": { // business array
"types": {
"*": { // type array
"@2": "bizArray[]", // make a copy of the whole biz object
"@": "typesArray[]"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"bizArray": {
"*": { // bizArray index
"Label": "Business[&1].Label",
"category": "Business[&1].category",
"weight": "Business[&1].weight"
}
},
"typesArray": {
"*": "Business[&].types"
}
}
}
]