07. Dezember 2020
Handhabung von JSON
Vor allem beim Testen von Webseiten steht man ab und an vor dem Problem, dass man JSON (=JavaScript Object Notation) parsen muss.
Oft wird hierfür eine JSON Bibliothek herunterladen und dann in das entsprechende Plugin Verzeichnis gelegt. Nach einem Neustart ist es dann möglich, z.B. die Python JSON Bibliothek in Jython Scripten zu benutzen.
In diesem Blogartikel soll allerdings die von QF-Test mitgelieferte JSON Bibliothek beschreiben werden. Diese Bibliothek baut auf der minimal-json-Bibliothek auf und hat den Vorteil, dass:
- sie bereits mit QF-Test mitgeliefert wird (also nicht zuerst ein Plugin installiert werden muss)
- Sie sowohl in Jython als auch in Groovy Scripten zur Verfügung steht
Die folgenden Kapitel beschreiben, wie diese Bibliothek zum Parsen und zum Erzeugen von JSON eingesetzt werden kann.
JSON parsen
Der generelle Code um mithilfe dieser Bibliothek ein JSON String zu parsen sieht wie folgt aus:
from de.qfs.lib.json import Json jsonStr = """{"a" : 1, "b" : "zzz", "c" : [1,2,3]}""" json = Json.parse(jsonStr)
(Jython Code um einen JSON String zu parsen)
import de.qfs.lib.json.Json
def jsonStr = """{"a" : 1, "b" : "zzz", "c" : [1,2,3]}"""
def json = Json.parse(jsonStr)
(Groovy Code um einen JSON String zu parsen)
Anschließend kann dann leicht auf die verschiedenen Werte zugegriffen werden, aus denen der JSON String besteht:
qf.println(json["a"]) # Ausgabe: 1 qf.println(json["b"]) # Ausgabe: zzz qf.println(json["c"]) # Ausgabe: [1,2,3] qf.println(json["c"][0]) # Ausgabe: 1 qf.println(json["c"][1]) # Ausgabe: 2 qf.println(json["c"][2]) # Ausgabe: 3
(Jython Code um dann auf die verschiedenen Werte zuzugreifen / diese im Terminal auszugeben)
qf.println(json["a"]) // Ausgabe: 1 qf.println(json["b"]) // Ausgabe: zzz qf.println(json["c"]) // Ausgabe: [1,2,3] qf.println(json["c"][0]) // Ausgabe: 1 qf.println(json["c"][1]) // Ausgabe: 2 qf.println(json["c"][2]) // Ausgabe: 3
(Groovy Code um dann auf die verschiedenen Werte zuzugreifen / diese im Terminal auszugeben)
In Groovy ist bei JSON Maps, weiterhin folgende Schreibweise möglich:
qf.println(json.a) // Ausgabe: 1
(Groovy Code um dann auf die verschiedenen Werte zuzugreifen / diese im Terminal auszugeben)
wodurch weitere Zeichen im Skript Code eingespart werden können. In diesem Zusammenhang verweise ich auch auf die ?-Schreibweise in Groovy. Diese Schreibweise bietet sich immer an, wenn ein bestimmter Wert im JSON-String vorhanden sein kann aber nicht vorhanden sein muss.
JSON erzeugen
Der generelle Code um mithilfe dieser Bibliothek einen JSON String zu erzeugen sieht wie folgt aus:
from de.qfs.lib.json import JsonBuilder obj = { "a" : [1,2,3,4] } jsonStr = JsonBuilder.toJsonValue(obj) (Jython Code um einen JSON String aus einem Objekt zu erzeugen)
import de.qfs.lib.json.JsonBuilder def obj = [ "a" : [1,2,3,4] ] def jsonStr = JsonBuilder.toJsonValue(obj) (Groovy Code um einen JSON String aus einem Objekt zu erzeugen)