处理数组中单个元素或多个元素时的动态震动
如果我们在 PartnerFunction 嵌套数组中收到一个数组,我的 jolt 规范工作得很好,但如果他们发送的 JSON 只涉及 PartnerFunction 中的一个元素,则它会失败
输入1
{
"CustomerMaster": {
"Rootnode": {
"KUNNR": "123",
"NAME1": "XXXX",
"LAND1": "SE",
"SalesArea": {
"VKORG": "1301",
"VTWEG": "10",
"SPART": "00",
"AUFSD": "",
"FAKSD": "",
"LIFSD": "",
"PartnerFunction": [
{
"PARVW": "RE",
"PARZA": "000",
"KUNN2": "1231"
},
{
"PARVW": "RE",
"PARZA": "000",
"KUNN2": "1232"
}
]
}
}
}
输入2
{
"CustomerMaster": {
"Rootnode": {
"KUNNR": "123",
"NAME1": "XXXX",
"LAND1": "SE",
"SalesArea": {
"VKORG": "1301",
"VTWEG": "10",
"SPART": "00",
"AUFSD": "",
"FAKSD": "",
"LIFSD": "",
"PartnerFunction": {
"PARVW": "RE",
"PARZA": "000",
"KUNN2": "1231"
}
}
}
}
}
我正在使用 Jolt Spec
[
{
"operation": "shift",
"spec": {
"CustomerMaster": {
"Rootnode": {
"SalesArea": {
"PartnerFunction": {
"*": {
"@(3,KUNNR)": "[&1].KUNNR",
"@(3,NAME1)": "[&1].NAME1",
"@(3,NAME2)": "[&1].NAME2",
"@(3,NAME3)": "[&1].NAME3",
"@(3,NAME4)": "[&1].NAME4",
"@(3,LAND1)": "[&1].LAND1",
"@(2,VKORG)": "[&1].VKORG",
"@(2,VTWEG)": "[&1].VTWEG",
"@(2,SPART)": "[&1].SPART",
"PARVW": "[&1].PARVW",
"PARZA": "[&1].PARZA",
"KUNN2": "[&1].KUNN2"
}
}
}
}
}
}
}
]
非常感谢任何帮助
在
modify转换中添加
toList
函数作为第一个规范将解决以下问题:
[
{
"operation": "modify-overwrite-beta",
"spec": {
"CustomerMaster": {
"Rootnode": {
"SalesArea": {
"PartnerFunction": "=toList"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"CustomerMaster": {
"Rootnode": {
"SalesArea": {
"PartnerFunction": {
"*": {
"@(3,KUNNR)": "[&1].KUNNR",
"@(3,NAME1)": "[&1].NAME1",
"@(3,NAME2)": "[&1].NAME2",
"@(3,NAME3)": "[&1].NAME3",
"@(3,NAME4)": "[&1].NAME4",
"@(3,LAND1)": "[&1].LAND1",
"@(2,VKORG)": "[&1].VKORG",
"@(2,VTWEG)": "[&1].VTWEG",
"@(2,SPART)": "[&1].SPART",
"PARVW": "[&1].PARVW",
"PARZA": "[&1].PARZA",
"KUNN2": "[&1].KUNN2"
}
}
}
}
}
}
}
]