动态 Jolt 规范用于处理 JSON 内的子数组是否包含单个元素、多个元素或子数组不存在
如果我们在 JSON 中嵌套数组有多个元素,那么我的 jolt 规范工作得很好,但是如果他们发送没有嵌套数组或有 1 个元素的嵌套数组的 JSON,则它不起作用
Input 1
(ArticleMainMaterial 数组中的多个元素) :
[
{
"payload": {
"header": {
"messageType": "ArticleSeason"
},
"articleSeason": {
"groupModelNumber": "JTT47",
"groupArticleNumber": "IT4876",
"seasonCode": "20251",
"salesLine": "551",
"articleMainMaterial": [
{
"materialComposition": "95% CO/5% EL",
"mainMaterialFlag": true
},
{
"materialComposition": "99% CO/10% PP",
"mainMaterialFlag": true
}
]
}
}
}
]
Input 2
(ArticleMainMaterial 数组中的一个元素) :
[
{
"payload": {
"header": {
"messageType": "ArticleSeason"
},
"articleSeason": {
"groupModelNumber": "JTT47",
"groupArticleNumber": "IT4876",
"seasonCode": "20251",
"salesLine": "551",
"articleMainMaterial": [
{
"materialComposition": "95% CO/5% EL",
"mainMaterialFlag": true
}
]
}
}
}
]
Input 3
(没有文章MainMaterial 数组) :
[
{
"payload": {
"header": {
"messageType": "ArticleSeason"
},
"articleSeason": {
"groupModelNumber": "JTT47",
"groupArticleNumber": "IT4876",
"seasonCode": "20251",
"salesLine": "551"
}
}
}
]
当前震动规格我正在使用:
[
{
"operation": "shift",
"spec": {
"*": {
"payload": {
"articleSeason": {
"groupArticleNumber": "groupArticleNumber",
"seasonCode": "seasonCode",
"groupModelNumber": "groupModelNumber",
"salesLine": "salesLine",
"articleMainMaterial": {
"*": {
"materialComposition": "materialComposition"
}
}
}
}
}
}
}, {
"operation": "shift",
"spec": {
"materialComposition": {
"*": {
"@(2,groupArticleNumber)": "[#2].groupArticleNumber",
"@": "[#2].&2",
"@(2,seasonCode)": "[#2].seasonCode",
"@(2,groupModelNumber)": "[#2].groupModelNumber",
"@(2,salesLine)": "[#2].salesLine"
}
}
}
}
]
预期输出 :
如果有一个元素,就应该有一条记录。如果没有articleMainMaterial数组,则materialComposition应为NULL
[
{
"groupArticleNumber": "IT4876",
"materialComposition": "95% CO/5% EL",
"seasonCode": "20251",
"groupModelNumber": "JTT47",
"salesLine": "551"
},
{
"groupArticleNumber": "IT4876",
"materialComposition": "99% CO/10% PP",
"seasonCode": "20251",
"groupModelNumber": "JTT47",
"salesLine": "551"
}
]