JOLT matriz json en un coincidencia aplicar String predeterminado
Teniendo el siguiente json de entrada:
{
"familyMembers":[
{
"name":"Richard",
"living":"Yes"
},
{
"name":"Napoleon",
"living":"No"
}
]
}
El objetivo es cambiar "living":"Yes"
a "living":"true"
, de modo que la salida deseada sea así:
{
"familyMembers":[
{
"firstName":"Richard",
"living":"true"
},
{
"firstName":"Napoleon",
"living":"false"
}
]
}
La siguiente especificación no produce la salida deseada:
[
{
"operation":"shift",
"spec":{
"familyMembers":{
"*":{
"name":"familyMembers[&1].firstName",
"living":{
"Yes":{
"#true":"familyMembers[&1].living"
},
"*":{
"#false":"familyMembers[&1].living"
}
}
}
}
}
}
]
El campo living
no está incluido. Si el familyMember
se cambia de un array a un mapa, entonces el campo living
se incluye en la salida con el valor esperado, como en este ejemplo: http://jolt-demo.appspot.com/#hashDefault
He estado luchando con este caso durante un par de días con diversas combinaciones de &, [], #
y dígitos. Hasta ahora no he tenido suerte.
Una especificación como esta
[
{
"operation":"shift",
"spec":{
"familyMembers":{
"*":{
"name":"familyMembers[&1].firstName",
"living":{
"Yes":{
"#true":"familyMembers[#].living"
},
"*":{
"#false":"familyMembers[#].living"
}
}
}
}
}
}
]
produce
{
"familyMembers":[
{
"firstName":"Richard",
"living":[
"true",
"false"
]
},
{
"firstName":"Napoleon"
}
]
}
lo cual no es lo que se requiere.
Cualquier sugerencia o ayuda es bienvenida.
davy.ai
Para lograr la salida deseada, se puede utilizar la siguiente especificación:
Esta especificación asignará el campo
name
afirstName
y el campoliving
atrue
ofalse
según su valor. Si el valor es “Yes”, se asignará atrue
, si es “No”, se asignará afalse
, y para cualquier otro valor se asignará afalse
.La salida de esta especificación será:
que es la salida deseada.