Tengo una matriz de matrices de objetos JSON en mi transformación Jolt, pero necesito mover los objetos hasta la matriz de nivel superior. Intenté agregar otro cambio, pero esto simplemente mueve los objetos a la misma ubicación o coloca los valores de los dos subobjetos en una matriz de valores.

Entrada:

[
  {
    "parent_id": 1,
    "passengers": [
      {
        "first_name": "John",
        "last_name": "Smith"
      },
      {
        "first_name": "Sarah",
        "last_name": "Jones"
      }
    ]
  },
  {
    "parent_id": 2,
    "passengers": [
      {
        "first_name": "Jess",
        "last_name": "Smith"
      },
      {
        "first_name": "Steve",
        "last_name": "Jones"
      }
    ]
  }
]

Especificaciones de sacudida:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "passengers": {
          "*": {
            "@(2,parent_id)": "[&(3)].[&1].parent_id",
            "$": "[&(3)].[&1].cid",
            "first_name": "[&(3)].[&1].first_name",
            "last_name": "[&(3)].[&1].last_name"
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "*": {
          "pcid": "=concat(@(1,parent_id),'#',@(1,cid))"
        }
      }
    }
  }
]

Salida de corriente:

[ [ {
  "parent_id" : 1,
  "cid" : "0",
  "first_name" : "John",
  "last_name" : "Smith",
  "pcid" : "1#0"
}, {
  "parent_id" : 1,
  "cid" : "1",
  "first_name" : "Sarah",
  "last_name" : "Jones",
  "pcid" : "1#1"
} ], [ {
  "parent_id" : 2,
  "cid" : "0",
  "first_name" : "Jess",
  "last_name" : "Smith",
  "pcid" : "2#0"
}, {
  "parent_id" : 2,
  "cid" : "1",
  "first_name" : "Steve",
  "last_name" : "Jones",
  "pcid" : "2#1"
} ] ]

Salida deseada:

[ {
  "parent_id" : 1,
  "cid" : "0",
  "first_name" : "John",
  "last_name" : "Smith",
  "pcid" : "1#0"
}, {
  "parent_id" : 1,
  "cid" : "1",
  "first_name" : "Sarah",
  "last_name" : "Jones",
  "pcid" : "1#1"
}, {
  "parent_id" : 2,
  "cid" : "0",
  "first_name" : "Jess",
  "last_name" : "Smith",
  "pcid" : "2#0"
}, {
  "parent_id" : 2,
  "cid" : "1",
  "first_name" : "Steve",
  "last_name" : "Jones",
  "pcid" : "2#1"
} ]
1
Nathan English 12 mar. 2021 a las 16:00

1 respuesta

La mejor respuesta

Esta operación de cambio debería funcionar cuando se agrega a su especificación:

{
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[]"
      }
    }
}

(agréguelo después de la operación "modify-overwrite-beta")

1
kasptom 13 mar. 2021 a las 21:32