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.

Especificación Jolt Transform JSON para una Entrada JSON de tipo Lista

Estoy tratando de hacer una transformación de desplazamiento JOLT de una lista de JSON ingresada. A continuación mi entrada:

[
  {
    "number": 1001,
    "description": "KA01"
  },
  {
    "number": 1002,
    "description": "KA02"
  }
]

Y quiero crear esta salida:

{
  "actions" : [
    {
      "_type": "SetFieldValue",
      "fieldName": "UUID",
      "value": "uuid"
    },
    { "_type": "InsertRow" },
    {
      "_type": "SetFieldValue",
      "fieldName": "number",
      "value": "1001"
    },
    {
      "_type": "SetFieldValue",
      "fieldName": "description",
      "value" : "KA01"
    },
    { "_type": "InsertRow" },
    {
      "_type": "SetFieldValue",
      "fieldName": "number",
      "value" : "1002"
    },
    {
      "_type": "SetFieldValue",
      "fieldName": "description",
      "value" : "KA02"
    },
    {
      "_type": "SetFieldValue",
      "fieldName": "start"
    }
  ]
}

No he trabajado mucho con la transformación JOLT y necesito ayuda en este caso.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear la salida deseada, deberás usar una combinación de transformaciones JOLT, incluyendo shift y default. La siguiente especificación JOLT te ayudará a lograr la salida deseada:

    [
      {
        "operation": "default",
        "spec": {
          "actions": {
            "#": {
              "_type": "SetFieldValue",
              "fieldName": "UUID",
              "value": "uuid"
            }
          }
        }
      },
      {
        "operation": "shift",
        "spec": {
          "*": {
            "number": {
              "@(2,actions)": {
                "_type": "SetFieldValue",
                "fieldName": "number",
                "value": "@(2,number)"
              }
            },
            "description": {
              "@(2,actions)": {
                "_type": "SetFieldValue",
                "fieldName": "description",
                "value": "@(2,description)"
              }
            }
          }
        }
      },
      {
        "operation": "default",
        "spec": {
          "actions": {
            "#": {
              "_type": "InsertRow"
            }
          }
        }
      },
      {
        "operation": "default",
        "spec": {
          "actions": {
            "#": {
              "_type": "SetFieldValue",
              "fieldName": "start"
            }
          }
        }
      }
    ]
    

    En esta especificación, primero usamos la operación “default” para establecer un valor predeterminado para el campo “actions”. Proporcionamos un array con un elemento que establece el campo “UUID” en “uuid”.

    Luego usamos la operación “shift” para desplazar cada elemento de la lista a una acción en el array “actions”. Usamos la notación “@(2,actions)” para especificar dónde colocar cada campo, y las notaciones “@(2,number)” y “@(2,description)” para obtener los valores correspondientes de la entrada.

    Finalmente, usamos dos operaciones “default” más para insertar una nueva fila después de cada elemento y establecer el campo “start” en su valor predeterminado.

    Puedes usar cualquier implementación de JOLT para aplicar esta transformación al JSON de entrada.

Comments are closed.