I'm trying to get some messages from a webservice. Inside data the keys are dynamic and i'm trying to get all the messages from the arrays and concatenate them in error message.
{
"success": false,
"message": "Eroare validare date",
"data": {
"driver.0.name": [
"Trebuie să menționați nume/denumire pentru șofer"
],
"driver.1.name": [
"Trebuie să menționați nume/denumire pentru șofer"
],
"driver.1tin": [
"CNP/CUI invalid pentru șofer"
],
"vehicle.card": [
"Serie CIV invalidă pentru vehiculul asigurat"
]
}
}
I wrote this spec :
[
{
"operation": "shift",
"spec": {
"message": "body.info_message",
"data": {
"*": {
"*": {
"#1": "body.error_message"
}
}
}
}
}
but i don't know how to target the messages
CodePudding user response:
You can consecutively use shift and then modify transformation along with a join function such as
[
{
"operation": "shift",
"spec": {
"message": "body.info_message", // changed the key name
"data": {
"*": {
"*": "body.error_message" // combine whole content nested within a single array
}
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"error_message": "=join(' | ',@(1,&))"
}
}
}
]
in order to generate the pipe separated content for the error messages such like
{
"body" : {
"info_message" : "Eroare validare date",
"error_message" : "Trebuie s? men?iona?i nume/denumire pentru ?ofer | Trebuie s? men?iona?i nume/denumire pentru ?ofer | CNP/CUI invalid pentru ?ofer | Serie CIV invalid? pentru vehiculul asigurat"
}
}