Jolt – Objeto autocontenido – Reemplazar de forma recursiva el nombre del campo.
Soy bastante nuevo en Jolt. Tengo una carga JSON que representa una condición lógica, como AND / OR, que puede contener una matriz de condiciones llamada “conditionPredicates”. Esto puede resultar en condiciones anidadas de la forma AND(OR(a, b, c), OR(d, e)). Quiero reemplazar el campo “conditionPredicates” por simplemente “conditions”. ¿Alguna ayuda por favor?
Entrada de muestra:
json
{
"type": "Condition.Aggregate.AND",
"payload": {
"conditionPredicates": [
{
"type": "Condition.Apple",
"payload": {
"fruit": "apple"
}
},
{
"type": "Condition.Aggregate.AND",
"payload": {
"conditionPredicates": [
{
"type": "Condition.Orange",
"payload": {
"fruit": "orange"
}
}
]
}
}
]
}
}
Salida esperada:
json
{
"type": "Condition.Aggregate.AND",
"payload": {
"conditions": [
{
"type": "Condition.Apple",
"payload": {
"fruit": "apple"
}
},
{
"type": "Condition.Aggregate.AND",
"payload": {
"conditions": [
{
"type": "Condition.Orange",
"payload": {
"fruit": "orange"
}
}
]
}
}
]
}
}
davy.ai
Para lograr esta transformación utilizando Jolt, puedes utilizar la siguiente especificación:
Explicación:
shift
selecciona el campopayload
y le aplica una sub-especificación.conditionPredicates
y le aplica otra sub-especificación a cada uno de sus elementos.@
se utiliza para mover todos sus campos hacia arriba un nivel, creando así un array de condiciones en el proceso. La notación&2
significa “subir dos niveles en el árbol”.&1
se refiere al índice del elemento actual, que se utilizará para crear el array.$merge
para agregar un nuevo campo llamadoconditions
a cada elemento, cuyo valor es el array de condiciones que acabamos de crear.payload
.Esto debería producir el resultado esperado.