¿Cómo agregar y eliminar correctamente elementos de la carga útil? (o reemplazar según una condición)
Entonces tengo una carga útil que tiene atributos antiguos, y quiero migrarlos para que sean los nuevos que usa toda la lógica restante. Antes de hacer la validación, quiero modificarlo un poco.
Actualmente puedo agregar y eliminar en transformaciones separadas, pero ¿sería posible hacerlo de una sola vez?
Carga útil de ejemplo:
{
"country": "Country",
"town": "Town",
"district": "Dist",
"owner": "Owner"
}
y la salida debería ser:
{
"country": "Country",
"city": "Town",
"area": "Dist",
"owner": "Owner"
}
Entonces agrego la transformación:
%dw 1.0
%output application/json
---
payload ++ {city: payload.town}
when
payload.town != null
otherwise
payload ++ {area: payload.distrinct}
when
payload.distrinct != null
otherwise
payload
Quiero verificar si la carga útil no tiene valores nulos en la clave “town” y agregar una nueva clave “city” con el valor de la clave “town”, y hacer lo mismo para verificar si “distrinct” no es nulo y agregar su valor como la clave “area”. Sin embargo, esto solo sucede para “city” (sé que se agregará al final, pero el orden no es un problema en mi caso), sin embargo, las claves pueden no estar presentes (puede que no haya “town”, o no haya “district” o no haya ambos).
Y en la siguiente transformación:
%dw 1.0
%output application/json
---
payload -- {town: payload.town}
when
payload.town != null
otherwise
payload
Intento verificar si las claves existen y luego eliminar las antiguas, pero no tengo suerte con eso 🙁
¿Alguna ayuda?
davy.ai
Sí, es posible agregar y quitar claves de una vez utilizando DataWeave. Puede actualizar la transformación existente de la siguiente manera:
En esta transformación, primero se agregan las nuevas claves
city
yarea
al payload, con sus valores establecidos comopayload.town
opayload.district
, respectivamente. La cláusuladefault null
se utiliza para manejar casos en los que la clave original no existe en el payload. Después de esto, se eliminan las claves antiguas del payload utilizando el operador-
, pasando una lista de nombres de claves para eliminar.Con esta única transformación, puede tanto agregar como eliminar claves del payload.