如果字符串是动态的,则 Json 值 "DE000001000150084063368" 的 Jolt 规范带有子字符串
Jolt Spec for Json value "DE000001000150084063368" with substring if string is dynamic
以下是我的输入
[
{
"correlationId": "12345",
"payloadFormat": "Money",
"payload": {
"DE61": "000001000150084063368456"
}
},
{
"correlationId": "ed1e3",
"payloadFormat": "Cash",
"payload": {
"DE61": "000001000150084063368"
}
}
]
预期输出为
[ {
"payload" : {
"correlationId" : "12345",
"payloadFormat" : "Money",
"DE61SF1" : "00",
"DE61SF2" : "100015008",
"DE61SF3" : "4063368",
"DE61SF4" : "456"
}
}, {
"payload" : {
"correlationId" : "ed1e3",
"payloadFormat" : "Cash",
"DE61SF1" : "00",
"DE61SF2" : "100015008",
"DE61SF3" : "4063368",
"DE61SF4" : "null"
}
} ]
我正在使用低于震动规格
[
{
"operation": "shift",
"spec": {
"*": {
"@": "&",
// Shift all the DE nodes to a same named node.
// Here it is moved as TMPDE
"payload": {
"DE|DE61": "&2.payload.TMPDE"
}
}
}
}, {
"operation": "modify-default-beta",
"spec": {
"*": {
"payload": {
"DE61SF1": "=substring(@(1,TMPDE), 2, 4)",
"DE61SF2": "=substring(@(1,TMPDE), 5, 14)",
"DE61SF3": "=substring(@(1,TMPDE), 14, 21)",
"DE61SF4": "=substring(@(1,TMPDE), 21, 24)"
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"correlationId": "[&1].payload.correlationId",
"payloadFormat": "[&1].payload.payloadFormat",
"payload": {
"DE61SF1": "[&2].payload.DE61SF1",
"DE61SF2": "[&2].payload.DE61SF2",
"DE61SF3": "[&2].payload.DE61SF3",
"DE61SF4": "[&2].payload.DE61SF4",
}
}
}
}
]
但是,如果我的第四个子字符串没有值,那么该值就不会打印。
我的要求是,如果在输入中字符串没有足够的值,那么如果没有值则拆分,那么对于该元素,它应该显示为 null
在规范末尾添加以下规范,这有助于
{
"operation": "default",
"spec": {
"*": {
"payload": {
"DE61SF4": "null"
}
}
}
}
以下是我的输入
[
{
"correlationId": "12345",
"payloadFormat": "Money",
"payload": {
"DE61": "000001000150084063368456"
}
},
{
"correlationId": "ed1e3",
"payloadFormat": "Cash",
"payload": {
"DE61": "000001000150084063368"
}
}
]
预期输出为
[ {
"payload" : {
"correlationId" : "12345",
"payloadFormat" : "Money",
"DE61SF1" : "00",
"DE61SF2" : "100015008",
"DE61SF3" : "4063368",
"DE61SF4" : "456"
}
}, {
"payload" : {
"correlationId" : "ed1e3",
"payloadFormat" : "Cash",
"DE61SF1" : "00",
"DE61SF2" : "100015008",
"DE61SF3" : "4063368",
"DE61SF4" : "null"
}
} ]
我正在使用低于震动规格
[
{
"operation": "shift",
"spec": {
"*": {
"@": "&",
// Shift all the DE nodes to a same named node.
// Here it is moved as TMPDE
"payload": {
"DE|DE61": "&2.payload.TMPDE"
}
}
}
}, {
"operation": "modify-default-beta",
"spec": {
"*": {
"payload": {
"DE61SF1": "=substring(@(1,TMPDE), 2, 4)",
"DE61SF2": "=substring(@(1,TMPDE), 5, 14)",
"DE61SF3": "=substring(@(1,TMPDE), 14, 21)",
"DE61SF4": "=substring(@(1,TMPDE), 21, 24)"
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"correlationId": "[&1].payload.correlationId",
"payloadFormat": "[&1].payload.payloadFormat",
"payload": {
"DE61SF1": "[&2].payload.DE61SF1",
"DE61SF2": "[&2].payload.DE61SF2",
"DE61SF3": "[&2].payload.DE61SF3",
"DE61SF4": "[&2].payload.DE61SF4",
}
}
}
}
]
但是,如果我的第四个子字符串没有值,那么该值就不会打印。 我的要求是,如果在输入中字符串没有足够的值,那么如果没有值则拆分,那么对于该元素,它应该显示为 null
在规范末尾添加以下规范,这有助于
{
"operation": "default",
"spec": {
"*": {
"payload": {
"DE61SF4": "null"
}
}
}
}