Recherche

Coder's IO

Tag

Json

JSONassert

 

A l'heure du déploiement massif d'API REST et de l'utilisation intensive du format JSON, il est très utile de pouvoir tester de manière simple mais efficace les différents flux que nous mettons à disposition.

Malgré la simplicité du format Json, la mise en place de test unitaire est toujours un peu fastidieuse sur ce format.
En effet, la représentation du flux est sous forme de chaîne de caractères. Comparer deux flux strictement identiques cela ne pose aucun problème. 
Par contre deux flux identiques sur le contenu mais dans un ordre différent cela se complique. 
Pour traiter ce cas, il va falloir parcourir chacun des éléments et ensuite faire des comparaisons un à un afin de vérifier que tous les éléments d'un flux sont bien présents dans le second. Je vous laisse imaginer le code à écrire et surtout à relire ultérieurement.

C'est précisément là que la librairie JSONassert intervient.
Cet outil permettra de faire des comparaisons de flux Json au niveau de la structure mais aussi des données.

L'exemple présenté sur le site de la librairie est assez éloquent : 

JSONObject data = getRESTData("/friends/367.json");
String expected = "{friends:[{id:123,name:\"Corby Page\"},{id:456,name:\"Carter Page\"}]}";
JSONAssert.assertEquals(expected, data, false);

La librairie propose deux types de vérification : une vérification stricte qui impose que les flux soient strictement identiques et l'autre qui tolérera que tous les champs résultats ne soient pas dans les champs attendus (très pratique pour vérifier quelques champs importants, sans vérifier tout le contenu du flux JSON). Dans tous les cas, l'ordre des champs n'a pas d'importance. Le deuxième mode est recommandé.

Actuellement, la librairie supporte comme framework de test  _JUnit_.

Comme toute bonne librairie, un quick start est proposé afin de rapidement prendre en main l'outil. Vous trouverez aussi un CookBook également très utile pour répondre aux cas classiques.

JSONassert est disponible sur les repos traditionnels Maven.

Bons tests !

#java #json #test

JSON.simple

JSON.simple est un outil permettant de transformer des objets java au format JSON et inversement.
Cet outil porte bien son nom par rapport à la simplicité de mise en oeuvre.
La première version est sortie en janvier 2009. Aujourd’hui, la version courante est la 1.1.1.

JSON.simple est pleinement compatible avec la spécification JSON (RFC4627), une suite de tests unitaires démontre cette compatibilité.

Un point intéressant est que l’api n’a aucune dépendance.

Les principales fonctionnalités sont les suivantes :

– Encoder au format JSON,
– Décoder à partir d’un flux JSON,
– Prend en charge l’échappement de certains caractères.

JSON.simple sait mapper nativement (decode/encode) les types suivants :

– String -> java.lang.String
– number -> java.lang.Number
– true|false -> java.lang.Boolean
– array -> java.util.List
– object -> java.util.Map.
– null -> null

En dehors de ces types, JSON va invoquer la méthode toString sur l’objet à encoder ce qui ne donne pas toujours le résultat souhaité.
Pour les objets sortant de ce scope, l’outil a prévu un moyen de rendre n’importe quelle classe Jsonifiable en fournissant l’interface JSONAware.
Cette interface définit une méthode à implémenter. Cette méthode sera invoquée au moment où l’objet sera transformé au format JSON.

Les différentes actions menées par l’outil se font en un temps record. Sur le site, on peut trouver un benchmark que l’on peut faire tourner localement.

Une dernière fonctionnalité intéressante est la possibilité d’intervenir dans la phase de parsing d’un flux JSON. Cette incursion se fait à la manière du traitement XML réalisé par l’api SAX.

J’ai eu recours très récemment à cet outil. La simplicité de mise en oeuvre est très appréciable.

#java #json #decode #encode

Propulsé par WordPress.com.

Retour en haut ↑

Concevoir un site comme celui-ci avec WordPress.com
Commencer