es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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"
      }
    ]
  }
}
Tags:  , ,

Answer

  1. Avatar for 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:

    {
      "operation": "remove",
      "spec": {
        "ma-loan": {
          "accounts": {
            "*": {
              "fullAccountNumber": "" // eliminar "fullAccountNumber" solo de "ma-loan.accounts"
            }
          }
        }
      }
    }
    

    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”.

Comments are closed.