Jolt Transformation a mis la valeur dans le mauvais élément de tableau

J'ai un problème avec ma transformation Jolt mais je ne sais pas comment le résoudre. La valeur est ajoutée au mauvais élément du tableau et non à celui auquel elle appartient.

C'est mon JSON:

{
"Verkaufsprodukt": [
{
"Produkt": [
{
"Kurzbeschreibung": "A"
},
{
"Kurzbeschreibung": "B",
"Kondition": [
{
"Bezeichnung": "something"
}
]
}
]
}
]
}

C'est la spécification:

[
{
"operation": "shift",
"spec": {
"Verkaufsprodukt": {
"*": {
"Produkt": {
"*": {
"Kurzbeschreibung": "vertragsdetails.deckungen[].bezeichnung",
"Kondition": {
"*": {
"Bezeichnung": "vertragsdetails.deckungen[&1].kondition"
}
}
}
}
}
}
}
},
{
"operation": "cardinality",
"spec": {
"vertragsdetails": {
"deckungen": "MANY"
}
}
}
]

J'attends ceci:

{
"vertragsdetails": {
"deckungen": [
{
"bezeichnung": "A"
},
{
"bezeichnung": "B",
"kondition": "something"
}
]
}
}

mais j'ai ça:

{
"vertragsdetails": {
"deckungen": [
{
"bezeichnung": "A",
"kondition": "something"
},
{
"bezeichnung": "B"
}
]
}
}

Pourquoi la « kondition » s'ajoute-t-elle au premier élément et non au second auquel il appartient? quelqu'un peut-il aider s'il vous plaît? Merci!


Solution du problème

le problème est dans le caractère générique que vous utilisez dans la spécification de secousse, vous devriez monter de 3 niveaux au lieu de 1, comme :

"Bezeichnung": "vertragsdetails.deckungen[&3].kondition"

un json comme celui-ci par exemple:

{
"Verkaufsprodukt": [
{
"Produkt": [
{
"Kurzbeschreibung": "A"
},
{
"Kurzbeschreibung": "B",
"Kondition": [
{
"Bezeichnung": "something"
},
{
"Bezeichnung": "andere something"
},
{
"Bezeichnung": "noch andere something"
}
]
},
{
"Kurzbeschreibung": "C",
"Kondition": [
{
"Bezeichnung": "x"
},
{
"Bezeichnung": "andere x"
},
{
"Bezeichnung": "noch andere x"
}
]
}
]
}
]
}

sera transformé en ceci:

{
"vertragsdetails": {
"deckungen": [ {
"bezeichnung": "A"
}, {
"bezeichnung": "B",
"kondition": [ "something", "andere something", "noch andere something" ]
}, {
"bezeichnung": "C",
"kondition": [ "x", "andere x", "noch andere x" ]
} ]
}
}

Commentaires

Posts les plus consultés de ce blog

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables