JOLT elimina el campo del array.
Tengo que copiar cuentas a dos niveles en la salida. Y de un nivel, necesito eliminar fullAccountNumber. Pero en mi especificación jolt, se está eliminando de ambos niveles. ¿Es algo que me falta con mi especificación de eliminación en jolt?
Tengo la siguiente entrada:
{
"applicant": {
"accounts": [
{
"fullAccountNumber": "00000000006276110961",
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Checking"
},
{
"fullAccountNumber": "00000000006276110961",
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Saving"
}
]
}
}
La salida deseada es la siguiente:
{
"accounts": [
{
"fullAccountNumber": "00000000006276110961",
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Checking"
},
{
"fullAccountNumber": "00000000006276110961",
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Saving"
}
],
"ma-loan": {
"accounts": [
{
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Checking"
},
{
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Saving"
}
]
}
}
La especificación jolt es la siguiente:
[
{
"operation": "shift",
"spec": {
"applicant": {
"accounts": ["accounts", "ma-loan.accounts"]
}
}
},
{
"operation": "remove",
"spec": {
"ma-loan": {
"accounts": {
"*": {
"fullAccountNumber": ""
}
}
}
}
}
]
La salida actual es la siguiente (quitando fullAccountNumber de ambos niveles):
{
"accounts": [
{
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Checking"
},
{
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Saving"
}
],
"ma-loan": {
"accounts": [
{
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Checking"
},
{
"maskedAccountNumber": "XXXXXX0961",
"accountType": "Saving"
}
]
}
}
davy.ai
Sí, en su especificación Jolt, la operación “remove” se aplica a ambos niveles del JSON de entrada porque la especificación está eliminando “fullAccountNumber” de todo el array “ma-loan.accounts”.
Para eliminar “fullAccountNumber” solo del segundo nivel del output (es decir, “ma-loan.accounts”), puede modificar la operación “remove” de la siguiente manera:
Esto solo eliminará “fullAccountNumber” del array “accounts” bajo “ma-loan” y dejará el mismo atributo intacto en el array “accounts” bajo el nivel superior “output”.