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.

Script JOLT creando filas de matriz duplicadas

Estoy tratando de escribir un script que filtre una matriz JSON si los objetos tienen una clave “parent_json”.

Aquí está el script jolt que escribí:

json
[
{
“operation”: “shift”,
“spec”: {
“: {
“parent_info”: {
“”: null,
“: {
“@2”: “[]”
}
}
}
}
}
]

Y funciona perfectamente, con la salvedad de que está duplicando las filas coincidentes. Tome este JSON de entrada:

json
[
{
“ID”: 5,
“username”: “test1”,
“parent_info”: {
“parent_id”: 4,
“parent_username”: “test”
}
},
{
“ID”: 4,
“username”: “test”
},
{
“ID”: 3,
“username”: “admin1”,
“parent_info”: {
“parent_id”: 2,
“parent_username”: “admin”
}
},
{
“ID”: 2,
“username”: “admin”
}
]

Y este JSON de salida:

json
[
{
“ID”: 5,
“username”: “test1”,
“parent_info”: {
“parent_id”: 4,
“parent_username”: “test”
}
},
{
“ID”: 5,
“username”: “test1”,
“parent_info”: {
“parent_id”: 4,
“parent_username”: “test”
}
},
{
“ID”: 3,
“username”: “admin1”,
“parent_info”: {
“parent_id”: 2,
“parent_username”: “admin”
}
},
{
“ID”: 3,
“username”: “admin1”,
“parent_info”: {
“parent_id”: 2,
“parent_username”: “admin”
}
}
]

¿Alguna idea de cómo puedo cambiar el script para no duplicar la salida?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede probar añadir una operación defaultIfEmpty al script JOLT para filtrar los duplicados. La operación defaultIfEmpty comprobará si la salida está vacía y, si lo está, establecerá la salida en un valor predeterminado. Por ejemplo:

    json
    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "parent_info": {
              "": null,
              "*": {
                "@2": "[]"
              }
            }
          }
        }
      },
      {
        "operation": "defaultIfEmpty",
        "spec": {
          "*": {
            "parent_info": {
              "": null
            }
          }
        }
      }
    ]
    

Comments are closed.