使用 JOLT 将顶级字段下推到数组的每个元素中
Pushdown a top level field into each element of an array using JOLT
我正在努力将顶级字段下推到其中数组的每个元素中。
- 我想将 'country' 推入 'state' 数组的每个元素
- 我想将 'stateName' 推入 'cities' 数组的每个元素
输入JSON:
{
"country": "usa",
"state": [
{
"stateName": "TX",
"location": "south",
"cities": [
{
"name": "Austin",
"pop": "1M"
},
{
"name": "Dallas",
"pop": "2M"
}
]
},
{
"stateName": "CA",
"location": "west",
"cities": [
{
"name": "SanFran",
"pop": "3M"
},
{
"name": "LosAngeles",
"pop": "4M"
}
]
}
]
}
预期输出JSON:
{
"state": [
{
"country": "usa", // pushed down country field into state array
"stateName": "TX",
"location": "south",
"cities": [
{
"stateName": "TX", // pushed down stateName field into cities array
"name": "Austin",
"pop": "1M"
},
{
"stateName": "TX",
"name": "Dallas",
"pop": "2M"
}
]
},
{
"country": "usa",
"stateName": "CA",
"location": "west",
"cities": [
{
"stateName": "CA",
"name": "SanFran",
"pop": "3M"
},
{
"stateName": "CA",
"name": "LosAngeles",
"pop": "4M"
}
]
}
]
}
规格
[
{
"operation": "shift",
"spec": {
"state": {
"*": { // state array index
"stateName": "state[&1].stateName",
"location": "state[&1].location",
// got up the tree 3 level 0,1,2
// and grab the value of "country" from
// that top level, and write it out to
// state[&1].country
"@(2,country)": "state[&1].country",
"cities": {
"*": { // city array index
"name": "state[&3].cities[&1].name",
"pop": "state[&3].cities[&1].pop",
"@(2,stateName)": "state[&3].cities[&1].stateName"
}
}
}
}
}
}
]
我正在努力将顶级字段下推到其中数组的每个元素中。
- 我想将 'country' 推入 'state' 数组的每个元素
- 我想将 'stateName' 推入 'cities' 数组的每个元素
输入JSON:
{
"country": "usa",
"state": [
{
"stateName": "TX",
"location": "south",
"cities": [
{
"name": "Austin",
"pop": "1M"
},
{
"name": "Dallas",
"pop": "2M"
}
]
},
{
"stateName": "CA",
"location": "west",
"cities": [
{
"name": "SanFran",
"pop": "3M"
},
{
"name": "LosAngeles",
"pop": "4M"
}
]
}
]
}
预期输出JSON:
{
"state": [
{
"country": "usa", // pushed down country field into state array
"stateName": "TX",
"location": "south",
"cities": [
{
"stateName": "TX", // pushed down stateName field into cities array
"name": "Austin",
"pop": "1M"
},
{
"stateName": "TX",
"name": "Dallas",
"pop": "2M"
}
]
},
{
"country": "usa",
"stateName": "CA",
"location": "west",
"cities": [
{
"stateName": "CA",
"name": "SanFran",
"pop": "3M"
},
{
"stateName": "CA",
"name": "LosAngeles",
"pop": "4M"
}
]
}
]
}
规格
[
{
"operation": "shift",
"spec": {
"state": {
"*": { // state array index
"stateName": "state[&1].stateName",
"location": "state[&1].location",
// got up the tree 3 level 0,1,2
// and grab the value of "country" from
// that top level, and write it out to
// state[&1].country
"@(2,country)": "state[&1].country",
"cities": {
"*": { // city array index
"name": "state[&3].cities[&1].name",
"pop": "state[&3].cities[&1].pop",
"@(2,stateName)": "state[&3].cities[&1].stateName"
}
}
}
}
}
}
]