I'm kinda struggling with Jolt filtering. I'm trying to remove some nodes from a nested JSON.
Here is my case:
JSON I have:
{
"message": {
"header": {
"something": "something"
},
"payload": {
"decisions": [
{
"sequenceId": "1",
"decision": "service1",
"something": "something"
},
{
"sequenceId": "2",
"decision": "service2",
"something": "something"
},
{
"sequenceId": "3",
"decision": "serviceToDelete",
"something": "something"
}
],
"elements": [
{
"serviceName": "service1",
"something": "something"
},
{
"serviceName": "service2",
"something": "something"
},
{
"serviceName": "serviceToDelete",
"something": "something"
}
]
},
"workflow": {
"Same String[1].ServiceId": "service1",
"Same String[1].StatusCode": "R0401",
"Same String[1].Decision.sequenceId": "1",
"Same String[2].ServiceId": "service2",
"Same String[2].StatusCode": "R0401",
"Same String[2].Decision.sequenceId": "2",
"Same String[3].ServiceId": "serviceToDelete",
"Same String[3].StatusCode": "R0401",
"Same String[3].Decision.sequenceId": "3"
}
},
"feedbacks": [],
"status": []
}
Expected Output:
{
"message": {
"header": {
"something": "something"
},
"payload": {
"decisions": [
{
"sequenceId": "1",
"decision": "service1",
"something": "something"
},
{
"sequenceId": "2",
"decision": "service2",
"something": "something"
}
],
"elements": [
{
"serviceName": "service1",
"something": "something"
},
{
"serviceName": "service2",
"something": "something"
}
]
},
"workflow": {
"Same String[1].ServiceId": "service1",
"Same String[1].StatusCode": "R0401",
"Same String[1].Decision.sequenceId": "1",
"Same String[2].ServiceId": "service2",
"Same String[2].StatusCode": "R0401",
"Same String[2].Decision.sequenceId": "2"
}
},
"feedbacks": [],
"status": []
}
For now I have the below Jolt config and I managed to remove the nodes from "decisions" and "elements" but I can't figure out how to remove the information in "workflow", based on "sequenceId", which will be different every time, we can take the value from "decisions"
Jolt filter:
[
{
"operation": "shift",
"spec": {
"*": "&",
"message": {
"*": "&1.&",
"payload": {
"*": "&",
"decisions": {
"*": {
"decision": {
"serviceToDelete": null,
"*": {
"@2": "&6.decisions"
}
}
}
},
"elements": {
"*": {
"serviceName": {
"serviceToDelete": null,
"*": {
"@2": "&6.elements"
}
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"message": {
"*": "&1.&",
"decisions": "&1.payload.decisions",
"elements": "&1.payload.elements"
}
}
}
]
Current output:
{
"message": {
"header": {
"something": "something"
},
"payload": {
"decisions": [
{
"sequenceId": "1",
"decision": "service1",
"something": "something"
},
{
"sequenceId": "2",
"decision": "service2",
"something": "something"
}
],
"elements": [
{
"serviceName": "service1",
"something": "something"
},
{
"serviceName": "service2",
"something": "something"
}
]
},
"workflow": {
"Same String[1].ServiceId": "service1",
"Same String[1].StatusCode": "R0401",
"Same String[1].Decision.sequenceId": "1",
"Same String[2].ServiceId": "service2",
"Same String[2].StatusCode": "R0401",
"Same String[2].Decision.sequenceId": "2",
"Same String[3].ServiceId": "serviceToDelete",
"Same String[3].StatusCode": "R0401",
"Same String[3].Decision.sequenceId": "3"
}
},
"feedbacks": [],
"status": []
}
Any help would be appreciated. Thanks! :)