Freemarker - Werte aus bestimmten Spalten als list zurückgeben

Hallo Zusammen,

mal wieder eine Frage zum Freemarker. In einem Datastore habe ich Spalten die mit dem Namen „uuid“ enden.
Ich möchte per Freemarker Script alle Werte innerhalb der Spalten die mit „uuid“ enden, als Liste ausgeben, damit das Ergebnis am Ende wie folgt aussieht.
„id“ muss immer davor stehen und danach folgt dann der Wert.

            "property": [
                "id": "39b2b612460652cea562a953935e6ca1",
                "id": "51ab42e2d23c566a99d1182657e5e65a",
                "id": "7ebd2fd53307510d8a026d45fb7952c9",
                "id": "a8abe44ab6855a2ca5528e8cd5ca46e2",
                "id": "acf2099e184058988c17d3745f13a0c3",
                "id": "af801fda67c85f3792b2349141e360b8",
                "id": "ed3f25c7d9e95712aa35ab4e57e37fda",
                "id": "f67dcf5db2395390905455761d5fb2a7",
                "id": "fd549cd1731050a4b4008f88ee525b60"
            ]

Ich hatte hier mal zu einem anderen Thema ein Script bekommen, was ich versucht habe so anzupassen, damit es für meine Anforderung passt.
Soweit bekomme ich auch die Werte zurückgespielt, allerdings nicht so richtig als Liste.

${row.getCols()?filter(col -> col.getTitle()!?ends_with('uuid') && col! != "")?join(",")}

Eventuell hilft mir das Code-Beispiel von Gustav aus dem Syncday weiter :slight_smile:

Danke!

Viele Grüße
Ramin

Hallo Ramin,

das sieht schon ziemlich gut aus. Ich glaube dir fehlt noch das Freemarker „map“ Built-in, damit du noch das "id": vor die UUIDs bekommst:

${row.getCols()?filter(col -> col.getTitle()!?ends_with('uuid') && col! != "")?map(uuid -> "\"id\": \"" + uuid +"\"")?join(", ")}

Viele Grüße
Torsten

Hallo Torsten,

darauf muss man erstmal kommen :smiley:
Funktioniert perfekt, danke Dir!

Viele Grüße
Ramin

1 Like