我正在使用 JOLT 将 JSON 数组转换为 JSON 数组,但无法按预期进行转换。我有以下输入 json(简化):
{
"object": {
"settings": [
{
"key": {
"id": 1
},
"rec": {
"value": "value 1"
}
},
{
"key": {
"id": 2
},
"rec": {
"value": "value 2"
}
},
{
"key": {
"id": 3
},
"rec": {
"value": "value 3"
}
}
],
"customer": [
{
"key": {
"id": 4
},
"rec": {
"address": "some address"
}
}
]
},
"date": "2024"
}
我想将所有对象的记录转换为像这样展平数组
[ {
"date" : "2024",
"id" : 4,
"address" : "some address"
}, {
"date" : "2024",
"id" : 1,
"value" : "value 1"
}, {
"date" : "2024",
"id" : 2,
"value" : "value 2"
}, {
"date" : "2024",
"id" : 3,
"value" : "value 3"
} ]
我最近的尝试是以下震动:
[
{
"operation": "shift",
"spec": {
"object": {
"customer": {
"*": {
"@3,date": "[&1].[0].date",
"key": {
"id": "[&2].[0].id"
},
"rec": {
"address": "[&2].[0].address"
}
}
},
"settings": {
"*": {
"@3,date": "[&1].[1].date",
"key": {
"id": "[&2].[1].id"
},
"rec": {
"value": "[&2].[1].value"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"@0": {
"*": "[&1]"
}
}
}
}
]
但是结果是:
[ [ {
"date" : "2024",
"id" : 4,
"address" : "some address"
}, {
"date" : "2024",
"id" : 1,
"value" : "value 1"
} ], {
"date" : "2024",
"id" : 2,
"value" : "value 2"
}, {
"date" : "2024",
"id" : 3,
"value" : "value 3"
} ]
请帮忙修复它。预先感谢。
很好的尝试!而是尝试编排
*
与 &
通配符,例如
[
{
"operation": "shift",
"spec": {
"object": {
"settings|customer": {
"*": {
"@3,date": "&2_&1.date",
"*": {
"*": "&3_&2.&"
}
}
}
}
}
},
{ // get rid of the object keys and return array of objects with no key
"operation": "shift",
"spec": {
"*": "[]"
}
}
]