50.7 Das JSON-Modul

Das JSON-Modul, welches in allen Skripten ohne speziellen Import zur Verfügung steht, bersetzt einen JSON-String in eine Datenstruktur aus Maps, Listen und primitiven Typen wie Integer, Double, Boolean und String. Die Serialisierung geschieht über die Methode stringify(). Anmerkung: Verwenden Sie rc.getJson(), wenn Sie Daten aus einer JSON-Struktur in einer QF-Test Variable auslesen möchten.

 
 
Object parse(Object text, Object reviver=None)

Die statische Methode zerlegt eine JSON-Zeichenkette und erstellt den über das text-Objekt festgelegten Objektwert oder Objekt.

Wenn die Methode aus Javascript heraus gerufen wird, wird die originale JavaScript-Version von JSON.parse() verwendet.

Wenn ein Wert für reviver angegeben ist, wird der ermittelte Wert transformiert bevor er zurückgegeben wird. Dabei werden der ermittelte Wert und alle seine Eigenschaften (beginnend mit den am tiefsten verschachtelten Eigenschaften über die weniger verschachtelten bis zum Originalwert selbst) einzeln durch den reviver bearbeitet.

  • reviver hat zwei Argumente: Schlüssel und Wert, also den Namen der Eigenschaft als Zeichenkette (auf bei Listen), und der Wert der Eigenschaft.
  • Wenn die reviver-Funktion eine NoSuchElementException wirft, wird die entsprechende Eigenschaft aus dem Objekt gelöscht (oder bei einer Liste durch null ersetzt). Bei einer UnsupportedOperationException bleibt der Wert unverändert. Ansonsten wird der Wert der Eigenschaft auf den Rückgabewert gesetzt.
  • Wenn der reviver nur einige Werte transformieren soll, so stellen Sie sicher, dass die nicht transformierten Werte so wie sie sind zurückgegeben werden oder eine UnsupportedOperationException geworfen wird. Andernfalls werden sie im Ergebnisobjekt gelöscht.

Analog zum Parameter replacer bei JSON.stringify() für List und Map, wird der reviver als letztes für den obersten Wert (root value) mit einer leeren Zeichenkette als Schlüssel und dem obersten Objekt als Wert gerufen.

Für andere gültige JSON-Werte arbeitet reviver analog und wird einmalig mit einer leeren Zeichenkette als Schlüssel und dem Wert selbst als Wert gerufen.

Wenn Sie einen anderen Wert vom reviver zurückgeben, wird der Wert den ursprünglich ermittelten Wert vollständig ersetzen. Dies gilt auch für den obersten Wert.

Parameter
text Der String oder InputStream, der in einen JSON-String umgewandelt werden soll.
reviver (Optional) Diese Funktion bzw. Closure beschreibt, wie jeder ursprünglich ermittelte Wert transformiert werden soll, bevor er zurückgegeben wird. Werte, die keine Funktion darstellen, also nicht aufrufbar sind, werden ignoriert.
RückgabewertDer Map, List, String, Number, Boolean oder null-Wert, der dem übergebenen JSON-Text entspricht.
 
Object stringify(Object value, Object replacer=None, Object space=None)

Die statische Methode konvertiert ein Objekt in eine JSON-Zeichenkette.

Wenn die Methode aus Javascript heraus gerufen wird, wird die originale JavaScript-Version von JSON.parse() verwendet.

Der Parameter replacer kann entweder eine Funktion oder ein Array sein.

  • Als Array geben die einzelnen Elemente die Namen der Eigenschaften im Objekt an, die in die erstellte JSON-Zeichenkette einbezogen werden sollen. Es werden nur Text- oder numerische Werte berücksichtigt.
  • Wenn eine Funktion angegeben wird, müssen zwei Parameter verarbeitet werden: Der Schlüssel und der Wert, der in Text umgewandelt werden soll.

Die replacer-Funktion wird auch für das initiale Objekt, das in Text umgewandelt wird, aufgerufen. In diesem Fall ist der Schlüssel eine leere Zeichenkette (""). Sie wird dann für jede Eigenschaft des umzuwandelnden Objekts oder Arrays gerufen. Der aktuelle Eigenschaftswert wird durch den Rückgabewert der replacer-Funktion ersetzt. Das heißt:

  • Wenn Sie eine Zahl, Text, Booleschen Wert oder null zurückliefern, wird dieser Wert direkt serialisiert und als Eigenschaftswert verwendet.
  • Wenn Sie eine NoSuchElementException werfen, wird die Eigenschaft nicht in die Ausgabe eingefügt.
  • Wenn Sie ein anderes Objekt zurückgeben, wird dieses Objekt rekursiv in Text umgewandelt, wobei die replacer-Funktion für jede Eigenschaft gerufen wird.
Anmerkung: Wenn eine JSON-Zeichenkette, die mit der replacer-Funktion generiert wurde, zerlegt werden soll, ist es hilfreich, den Parameter reviver für die Umkehrfunktion zu verwenden.

Typischerweise verändern sich die Indizes der Array-Elemente nicht. (Auch wenn das Element ein ungültiger Wert wie zum Beispiel eine Funktion ist. In diesem Fall wird es zu null, wird aber nicht gelöscht.) Die Verwendung der replacer-Funktion erlaubt es, die Reihenfolge der Array-Elemente zu bestimmen, indem ein anderes Array zurückgeben wird.

Parameter
value Der Wert, der in eine JSON-Zeichenkette umgewandelt werden soll.
replacer (Optional) Eine Funktion, die den Vorgang der Textumwandlung beeinflusst oder ein Array aus Texten und Zahlen, die die Eigenschaften angeben, die in das Ergebnis übernommen werden sollen. Wenn es sich weder um eine Funktion noch um ein Array handelt, werden alle Objekteigenschaften, deren Schlüssel vom Typ String sind, in das Ergebnis übernommen.
space (Optional) Eine Zeichenkette oder eine Zahl, die verwendet wird, um Leerzeichen sowie Einrückung, Zeichenumbrüche etc. einzufügen, um die Lesbarkeit der JSON-Zeichenkette zu verbessern.
  • Als Zahl gibt der Parameter an, wie viele Leerzeichen für die Einrückung verwendet werden sollen (begrenzt auf 10 Leerzeichen). Werte unter 1 geben an, dass keine Leerzeichen eingefügt werden sollen.
  • Als Zeichenkette wird diese (beziehungsweise ihre ersten 10 Zeichen) vor jedem geschachtelten Objekt oder Array eingefügt.
  • Wenn space kein Text oder keine Zahl ist, zum Beispiel null, oder nicht angegeben wurde, werden die Elemente nicht eingerückt.
RückgabewertEine JSON-Zeichenkette, die den übergebenen Wert darstellt, oder null.