Ich möchte ein Datenfeld aus einem etwas komplexeren JSON parsen
Bisher mache ich das im visual editor, brauche aber noch eine andere spalte, daher möchte ich es im Mapper parsen.
Ich weiss leider nicht wie ich das mache.
Kann jemand helfen?
Hauptknoten: ShipmentResponse.ShipmentResults.ShipmentIdentificationNumber
Feld innerhalb des Knotens: PackageResults_arr.ShippingLabel.GraphicImage
Hi Philipp,
du kannst valides JSON direkt im Mapper über die eval_json funktion parsen.
Das gibt dir ein Objekt zurück, auf das du nach belieben zugreifen kannst.
Beispiel:
<#assign test = spaltenTitle?eval_json>
${test.PackageResults_arr.ShippingLabel.GraphicImage}
Viele Grüße
Stefan
Danke @sHelme
Dein code funktioniert leider nicht. Ich glaube da fehlt auch was.
Ich habe es so probiert, aber das funktioniert nur bei der Tracking Nummer.
Das JSON sieht so aus (siehe unten)
Hallo Philipp,
du bekommst in deinem JSON ein Array (eine Liste an PackageResults) zurück.
Das musst du mit beachten.
Darauf kannst du über [position] zugreifen.
Beispiel:
Spalte „json_test“ Inhalt:
{
"object1": "test",
"parentobject": {
"childobject": "this is an json access example child value",
"PackageResults_arr": [
{
"ShippingLabel": {
"GraphicImage": "GraphicImageContent1"
}
},
{
"ShippingLabel": {
"GraphicImage": "GraphicImageContent2"
}
}
]
}
}
Parsing:
<#assign test = result["json_test"]?eval_json>
${test.parentobject.PackageResults_arr[0].ShippingLabel.GraphicImage}
Ergebnis:
GraphicImageContent1
Wenn du alle Labels haben willst dann kannst du das JSON Objekt zunächst über die Map Funktion „flatten“ und dann joinen.
Parsing:
<#assign test = result["json_test"]?eval_json>
<#assign packages = test.parentobject.PackageResults_arr>
${packages?map(x -> x.ShippingLabel.GraphicImage)?join(",")}
Ergebnis:
GraphicImageContent1,GraphicImageContent2
Viele Grüße
Stefan
Danke hat jetzt geklappt!