07. décembre 2020
Comment utiliser JSON
En particulier lorsque vous testez des sites Web, vous êtes de temps en temps confronté au problème de l'analyse des chaînes JSON (=JavaScript Object Notation).
Souvent, pour cela, une bibliothèque JSON est téléchargée et placée dans le répertoire du plugin correspondant. Après un redémarrage, il est alors possible d'utiliser, par exemple, la bibliothèque Python JSON dans des scripts Jython.
Dans cet article de blog, cependant, la bibliothèque JSON fournie par QF-Test devrait être décrite. Cette bibliothèque est basée sur la bibliothèque minimal-json-library et a l'avantage de :
- il est déjà fourni avec QF-Test (il ne s'agit donc pas d'un plugin à installer en premier)
- Il est disponible dans les scripts Jython et Groovy.
Les chapitres suivants décrivent comment cette bibliothèque peut être utilisée pour l'analyse syntaxique JSON et la génération JSON.
JSON parsing
Le code général pour analyser une chaîne JSON en utilisant cette bibliothèque ressemble à ceci :
from de.qfs.lib.json import Json jsonStr = """{"a" : 1, "b" : "zzz", "c" : [1,2,3]}""" json = Json.parse(jsonStr)
(Code Jython pour analyser une chaîne Jython)
import de.qfs.lib.json.Json
def jsonStr = """{"a" : 1, "b" : "zzz", "c" : [1,2,3]}"""
def json = Json.parse(jsonStr)
(Code Groovy pour analyser une chaîne Jython)
Ensuite, vous pouvez facilement accéder aux différentes valeurs définies dans la chaîne JSON :
qf.println(json["a"]) # Output: 1 qf.println(json["b"]) # Output: zzz qf.println(json["c"]) # Output: [1,2,3] qf.println(json["c"][0]) # Output: 1 qf.println(json["c"][1]) # Output: 2 qf.println(json["c"][2]) # Output: 3
(Code Jython afin d'accéder aux différentes valeurs / les sortir sur le terminal)
qf.println(json["a"]) // Output: 1 qf.println(json["b"]) // Output: zzz qf.println(json["c"]) // Output: [1,2,3] qf.println(json["c"][0]) // Output: 1 qf.println(json["c"][1]) // Output: 2 qf.println(json["c"][2]) // Output: 3
(Code Groovy afin d'accéder aux différentes valeurs / les sortir sur le terminal)
En Groovy, la notation suivante est également possible pour les cartes JSON :
qf.println(json.a) // Output: 1
(Code Groovy afin d'accéder aux différentes valeurs / les sortir sur le terminal)
ce qui permet de "sauvegarder" d'autres caractères dans le script. Dans ce contexte, permettez-moi également d'attirer l'attention sur la fonction ?-Notation de Groovy, qui est utile lorsqu'une certaine valeur peut être présente dans la chaîne JSON mais ne doit pas l'être.
Générer JSON
Le code général pour générer une chaîne JSON en utilisant cette bibliothèque ressemble à ceci :
from de.qfs.lib.json import JsonBuilder obj = { "a" : [1,2,3,4] } jsonStr = JsonBuilder.toJsonValue(obj) (Code Jython pour générer une chaîne JSON à partir d'un objet)
import de.qfs.lib.json.JsonBuilder def obj = [ "a" : [1,2,3,4] ] def jsonStr = JsonBuilder.toJsonValue(obj) (Code Groovy pour générer une chaîne JSON à partir d'un objet)