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.

Eliminar nulos del array utilizando Jolt

Tengo un problema para eliminar los valores nulos de un array utilizando jolt, como se describe a continuación:

Entrada

{
  "userId": "1",
  "age": "20",
  "firstName": "firstname1",
  "lastname": "lastname1",
  "zipCode": "zipcode1",
  "street": "street1",
  "city": "city1",
  "country": "country",
  "gender": "gender1",
  "grade": "grade1",
  "birthday": "birthday1"
}

Especificación de Jolt

[
  {
    "operation": "shift",
    "spec": {
      "userId": "ID",
      "age": "age",
      "firstName": "firstName",
      "lastname": "lastname",
      "gender": "gender",
      "grade": "grade",
      "birthday": "birthday",
      "street|city|zipCode|country": {
        "$": "address[#2].code",
        "@": "address[#2].value"
      }
    }
  }
]

Resultado

{
  "ID": "1",
  "age": "20",
  "firstName": "firstname1",
  "lastname": "lastname1",
  "gender": "gender1",
  "grade": "grade1",
  "birthday": "birthday1",
  "address": [ null, null, null, null, null, null, null,
    {
      "code": "street",
      "value": "street1"
    },
    {
      "code": "city",
      "value": "city1"
    },
    {
      "code": "zipCode",
      "value": "zipcode1"
    },
    {
      "code": "country",
      "value": "country"
    }
  ]
}

He intentado algunas soluciones sugeridas por @Barbaros gracias a él, como se describe en el siguiente enlace: https://stackoverflow.com/questions/70382927/remove-null-values-from-json-output-using-jolt, pero sigo teniendo problemas. Cualquier ayuda sería apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar los valores nulos del array “address” en la salida de Jolt, puedes agregar una operación “default” después de la operación “shift”. Esto te permitirá establecer un valor predeterminado para cualquier valor nulo en el array.

    Aquí está la especificación actualizada de Jolt:

    [
      {
        "operation": "shift",
        "spec": {
          "userId": "ID",
          "age": "age",
          "firstName": "firstName",
          "lastname": "lastname",
          "gender": "gender",
          "grade": "grade",
          "birthday": "birthday",
          "street|city|zipCode|country": {
            "$": "address[#2].code",
            "@": "address[#2].value"
          }
        }
      },
      {
        "operation": "default",
        "spec": {
          "address": []
        }
      },
      {
        "operation": "modify-overwrite-beta",
        "spec": {
          "address": {
            "*": "=recursivelySquashNulls"
          }
        }
      }
    ]
    

    La nueva operación “default” establece el array “address” como un array vacío si es nulo en la entrada. Luego, se agrega una nueva operación “modify-overwrite-beta” para eliminar recursivamente cualquier valor nulo del array “address” utilizando la función “recursivelySquashNulls”.

    Con estos cambios, la salida actualizada se verá así:

    {
      "ID": "1",
      "age": "20",
      "firstName": "firstname1",
      "lastname": "lastname1",
      "gender": "gender1",
      "grade": "grade1",
      "birthday": "birthday1",
      "address": [
        {
          "code": "street",
          "value": "street1"
        },
        {
          "code": "city",
          "value": "city1"
        },
        {
          "code": "zipCode",
          "value": "zipcode1"
        },
        {
          "code": "country",
          "value": "country"
        }
      ]
    }
    

Comments are closed.