Comment formater un JSON pour le rendre lisible ?

Le langage JSON permet de structurer des données à l'aide d'accolades, de virgules et de crochet. Utilisé au départ avec le langage JavaScript, il s'est généralisé pour être pris en charge par de nombreux autres langages. Un fichier JSON ne contient pas obligatoirement de saut de ligne et d'indentation. Il peut être dans ce cas difficile à lire pour un utilisateur. Il est possible avec une ligne de commande de formater un fichier JSON pour le rendre plus lisible.

Avec la ligne de commande, il est possible de faire appel au langage Python pour formater un fichier JSON. Il faut pour cela utiliser une version égale ou plus récente que la version 2.6. En utilisant l'option -m et l'outil json.tool, il est possible de formater un fichier JSON.

python -m json.tool mon_fichier.json

Cette commande peut également formater du JSON écrit directement dans le shell. Il faut pour cela utiliser la commande echo avec un pipe.

echo '{prenom: Jean, nom: Dupont}' | python -m json.tool
#Resultat
{
prenom: Jean,
nom ; Dupont
}</pre>

L'outil NodeJS permet d'utiliser le langage JavaScript directement en ligne de commande. On peut alors appeler la méthode JavaScript JSON.Stringify qui formate une chaîne JSON en JavaScript. Le premier argument permet de filtrer les propriétés de l'objet inclus. Il faut indiquer null pour ne pas faire de filtre. Le deuxième argument est le nombre d'espaces utilisés pour l'indentation. On peut également indiquer une chaîne de caractères qui remplace les espaces. Pour transmettre le JSON, il faut appeler la méthode JSON.Parse() qui parse une chaîne de caractères comme du JSON.
#Formater du JSON directement à partir de la ligne de commande, avec 4 espaces comme indentation
<pre>$ node -e console.log(JSON.stringify(JSON.parse(process.argv[1]), null, 4)); '{prenom:Jean,nom:Dupont}'</pre>
#Formater du JSON à partir d'un fichier, avec une tabulation comme indentation
<pre>$ node -e console.log(JSON.stringify(JSON.parse(require('fs')
.readFileSync(process.argv[1])), null, ' ')); mon_fichier.json</pre>

Il est également possible de faire appel à des utilitaires qui peuvent formater du JSON en ligne de commande, comme l'utilitaire jq (https://stedolan.github.io/jq/) ou l'utilitaire undescore-cli (https://github.com/ddopson/underscore-cli).

JavaScript