Startseite / Erweiterte JSON-Unterstützung / API zum Anpassen der JSON-Ausgabe

API zum Anpassen der JSON-Ausgabe

Inhaltsverzeichnis

• set

• get

• removeKey

• mapKeys

• filter

Der Rückgabewert von json() unterstützt mehrere Methoden, um die generierte Ausgabe anzupassen. Methoden können in beliebiger Reihenfolge verkettet und kombiniert werden.

Einstiegspunkte in die API sind:

set

Das Ersetzen oder Hinzufügen von Schlüsseln in einem JSON-Objekt ist durch den Aufruf von

json(...).set(key, value)

möglich.

Beispiel 1:

$CMS_VALUE(json({"example": "value"}).set("additional_key", "additional_value"))$

Ergebnis:

{"additional_key":"additional_value","example":"value"}

Beispiel 2:

$CMS_VALUE(json({"example": "value"}).set("a", "A").set("a", "B"))$

Ergebnis:

{"a":"B","example":"value"}

Auch wenn die JSON-Spezifikation doppelte Einträge in einem JSON-Objekt (zwei Einträge mit gleichem Schlüssel) erlaubt, unterstützt die FirstSpirit-JSON-Lösung dies nicht. Das Hinzufügen eines Eintrags mit einem vorhandenen Schlüssel ersetzt also den vorherigen Eintrag.

get

Mit .get() kann auf die Werte der Felder eines JSON-Objekts zugegriffen werden. Hier ist ein komplexeres Beispiel:

1) Die JSON-Darstellung eines Abschnitts in der Variable jsonObject speichern:

$CMS_SET(jsonObject, json(#this))$

2) Dem data-Feld von jsonObject einen neuen (String)-Wert hinzufügen:

$CMS_SET(void, jsonObject.get("formData").set("anotherString","anotherValue"))$

3) Ausgabe des geänderten JSON-Objekts:

$CMS_VALUE(jsonObject)$

Ergebnis:

{
"fsType": "Section",
"name": "filter",
"identifier": "filter",
"formData": {
"anotherString": "anotherValue",
[...]
}
}

Die gleiche Modifikation kann mit den folgenden zwei Zeilen Vorlagencode erreicht werden:

$CMS_SET(set_data, json(#this).get("formData").set("anotherString","anotherValue"))$
$CMS_VALUE(json(#this).set("formData",set_data))$

removeKey

Mit der Funktion removeKey kann ein Schlüssel aus einem JSON-Objekt entfernt werden.

Beispiel 1:

$CMS_VALUE(json({"example": "value"}))$

Ergebnis:

{"example":"value"}

Beispiel 2:

$CMS_VALUE(json({"example": "value"}).removeKey("example"))$ 

Ergebnis:

{}

mapKeys

Die Funktion mapKeys kann verwendet werden, um Schlüsselnamen zu ändern.

Beispiel 1:

$CMS_SET(example, {"example": "value", "recursion": {"example2": "value2"}})$ 
$CMS_VALUE(json(example).mapKeys(key -> key.toUpperCase))$

Ergebnis:

{"EXAMPLE":"value","RECURSION":{"EXAMPLE2":"value2"}}

Beispiel 2:

$CMS_VALUE(json(example).mapKeys(key -> if(key.startsWith("ex"), "s" + key.substring(2), key)))$

Ergebnis:

{"recursion":{"sample2":"value2"},"sample":"value"}

Diese Beispiele erzeugen lediglich modifizierte Ausgaben und ändern nicht das Beispielobjekt selbst.

Das Beispiel kann aber auch mit dieser modifizierten Ausgabe überschrieben werden:

$CMS_SET(example,json(example).mapKeys(key -> key.toUpperCase))$

filter

Die Filterfunktion kann verwendet werden, um JSON-Objekteinträge nach einem Prädikat zu filtern.

Beispiel 1:

$CMS_SET(example, {"example": "value", "recursion": {"example2": "value2"})$ 
$CMS_VALUE(json(example))$

Ergebnis:

{ "example": "value","recursion":{"example2":"value2"}}

Beispiel 2:

$CMS_VALUE(json(example).filter(entry -> ! entry.key.startsWith("ex")))$

Ergebnis:

{"recursion":{}}

Beispiel 3:

$CMS_SET(example2, {"example3": null, "recursion2": { "example4": null }})$
$CMS_VALUE(json(example2))$

Ergebnis:

{"example3":null,"recursion":{"example4":null}}

Beispiel 4:

$CMS_VALUE(json(example2).filter(entry -> entry.value != null))$

Ergebnis:

{"recursion2":{}}

© 2005 - 2026 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2026.10 | Datenschutz