JSON dans Vert.X

Vert.x core fournit quelques classes pour faire du JSON. Il les utilise dans ses APIs. C’est Jackson qui est utilisé de façon cachée.

Json

La classe io.vertx.core.json.Json est essentiellement un wrapper pour ObjectMapper de Jackson. Elle est là pour nous cacher et simplifier l’utilisation de l’ObjectMapper, avec des méthodes statiques.

Pour passer d’un contenu json à un objet Java :

String jsonString = "{\"name\":\"Alexis\"}";
Person person = Json.decodeValue(jsonString, Person.class);

Il existe aussi une version joliment formattée.

Et pour le sens inverse :

String jsonPerson = Json.encode(person);

JsonObject

La classe io.vertx.core.json.JsonObject permet de charger du contenu json dans un objet non typé, qui ressemble à une map.

JsonObject jsonObject = new JsonObject(jsonString);
String name = jsonObject.getString("name");

On a donc des méthodes getXxx() pour récupérer les valeurs et des méthodes put() pour en modifier ou en ajouter.

Et pour transformer en json, on encode(), avec aussi une variante prettily :

jsonObject.put("Age", 42);
String result = jsonObject.encode());

JsonArray

La classe io.vertx.core.json.JsonArray est l’équivalent de JsonObject pour des tableaux.

String jsonArrayString = "[\"Alexis\", \"Alice\"]";

JsonArray jsonArray = new JsonArray(jsonArrayString);
String first = jsonArray.getString(0));

jsonArray.add("Bob");
String result = jsonArray.encode());