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 - 2021 e-Spirit AG | Alle Rechte vorbehalten. | FirstSpirit 2021-03 | Datenschutz | Impressum | Kontakt