Vous êtes sur la page 1sur 12

JACKSON pour le mappage JSON JAVA

Durant le projet, on s’est posé la question à savoir comment traiter les fichiers JSON qu’on a
avec notre code JAVA. On a pensé à faire du mappage passant du JSON au code Java. Pour
ce faire, on a utilisé JACKSON.
Pour comprendre l’API, l’objectif c’était d’utiliser un fichier JSON comme fichier test et
d’arriver à faire ce mappage. On s’est rendu compte que, faire ce mappage, revenait à créer
tous les champs dans des classes. Vu que nous, on s’intéresse seulement aux coordonnées
pour localiser les commerces de Paris et éventuellement le type. Donc, il fallait chercher un
moyen d’ignorer les autres champs. Après plusieurs heures de recherches, il se trouvait qu’il
fallait juste rajouter une ligne, l’annotation @JsonIgnoreProperties(ignoreUnknown = true) .
Ci-dessous notre fichier JSON

Et ci-dessous nos classes permettant le mappage JSON-JAVA


Juste pour le mappage avec un fichier JSON simple, il nous a fallu écrire deux classes
(Address et Employee) sans oublier de surcharger les méthodes ToString(). Surcharger
ToString() nous permettra dans notre classe Main après de vérifier si tout c’est bien passer.
Ci-dessous notre classe Main

Et comme output on a
Ce qui prouve que le mappage à bien fonctionner.
Vu qu’on a compris comment fonctionne l’API JACKSON, on se devait de l’appliquer au
projet. Pour cela, avant même de faire un service REST, on a pris un fichier JSON où il y’a
certains commerces de PARIS, et on voulait récupérer seulement les coordonnées (latitude et
longitude) et le type de commerce. Ce n’était pas si simple vu que le fichier contient plusieurs
champs. Et si on regarde de plus près, il y’a un champ, records contenant tous les commerces
sous forme de tableau. Ce champ contient un autre champ fields qui à son tour contient un
champ xy où se trouve les coordonnées sous forme de tableau. Le champ fields contient aussi
un autre champ libact. C’est ce champ qui contient les types de commerce.
Pour récupérer ces champs, on a eu à écrire 3 classes.
Ci-dessous le fichier JSON

De même pour nos trois classes


Comme pour le premier exemple, on a surcharger la méthode ToString() pour toutes les
classes et rajouter l’annotation @JsonIgnoreProperties(ignoreUnknown = true) pour
ignorer les autres champs. Si vous regardez bien on a gardé les mêmes noms pour les champs.
Cela est fait exprès pour éviter les annotations sur les champs et faciliter le mappage des
objets.
Ci-dessous notre méthode main pour tester que tout fonctionne

Et comme output on a
On peut dire qu’un tiers du travail est déjà fait. Vu que, à partir d’un fichier JSON des
commerces de PARIS, on arrive à afficher les coordonnées et le type de commerce.
Récupération des coordonnées via une adresse

Vu que sur l’interface, l’utilisateur donne une adresse exacte exemple 5 rue Saint Honoré
75001 et on recommande à l’utilisateur les commerces d’un certain type à côté, il nous faut
pouvoir le repérer grâce à des coordonnées. Il fallait qu’on trouve un moyen de passer d’une
adresse exacte à des coordonnées pour pouvoir l’afficher. Pour ce faire, Google propose une
API, GEOCODING API. Cette API permet, avec une adresse exacte, de retourner un fichier
JSON contenant un tas d’information et bien sûr nos coordonnées. L’objectif est alors de faire
un mappage et de récupérer ces coordonnées tout en ignorant les autres champs. Nul doute,
fallait réutiliser JACKSON pour le faire. Normalement, au final on récupérera l’adresse
exacte à l’aide d’un formulaire ce qui fait que l’utilisation de l’API REST est indispensable.
Par contre, comme on veut s’assurer que le mappage se fasse correctement, on a juste créé les
classes adéquates (3 au totale) et la classe Main pour tester.
Ci-dessous le code JSON que nous retourne GECODING API grâce à un URL
Ci-dessous les trois classes pour faire le mappage
Dans notre Main, pour les deux premiers exemples, on utilisait un InputStream en passant par
un objectMapper pour créer l’instance. Il se trouve que là, on n’a pas besoin d’un client http
pour récupérer le JSON. La méthode static ReadValue de la classe ObjectMapper est
surchargée et celle que l’on va utiliser prend en paramètre une url de la classe java.net.
Ci-dessous notre classe Main pour le test. Il faut noter que la clé pour l’API de Google se
trouve dans un autre fichier d’où l’utilisation d’un BufferedReader pour le lire.
Et comme résultat, on est arrivé à avoir les coordonnées.

Affichage sur un MAP GOOGLE API

Pour l’affichage sur le MAP, la première chose qu’on a essayé de faire c’est d’afficher les
commerces qui étaient dans le fichier commerce.txt. Comme on a déjà fait le mappage, on a
juste mis dans un fichier JavaScript les coordonnées et le type de commerce dans une
variable.
Ci-dessous le fichier where.js
Maintenant dans notre fichier HTML, on récupère un à un les coordonnées et on l’affiche sur
un Map. Pour les types de commerces, il faudra déplacer le curseur sur le commerce en
question pour le voir.
Ci-dessous notre fichier where.html

Et si on lance notre fichier where.html, on constate que cela marche très bien.
Il ne reste plus qu’à utiliser l’API REST pour récupérer l’adresse et le type de commerce à
l’aide d’un formulaire et d’afficher les commerces aux environs sur un Map .

Vous aimerez peut-être aussi