J'ai un tableau de tableaux d'objets JSON dans ma transformation Jolt, mais je dois déplacer les objets vers le tableau de niveau supérieur. J'ai essayé d'ajouter un autre Shift, mais cela déplace simplement les objets au même emplacement ou place les valeurs des deux sous-objets dans un tableau de valeurs.

Contribution:

[
  {
    "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"
      }
    ]
  }
]

Jolt Spec:

[
  {
    "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))"
        }
      }
    }
  }
]

Sortie actuelle:

[ [ {
  "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"
} ] ]

Sortie désirée:

[ {
  "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 mars 2021 à 16:00

1 réponse

Meilleure réponse

Cette opération de décalage devrait faire l'affaire lorsqu'elle est ajoutée à votre spécification:

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

(ajoutez-le après l'opération "modify-overwrite-beta")

1
kasptom 13 mars 2021 à 21:32