Visionneuse JSON Bash — jless & JQ_COLORS
Utilisez le Embellisseur JSON gratuit directement dans votre navigateur — sans installation.
Essayer Embellisseur JSON en ligne →Quand vous avez besoin d'un visualiseur JSON en bashpour l'exploration interactive plutôt que pour les scripts, le pipe standard jq .montre ses limites — la sortie défile au-delà du haut du terminal et vous n'avez aucun moyen de revenir en arrière dans une réponse API de 300 lignes. Ce guide couvre les outils conçus spécifiquement pour visualiser du JSON interactivement dans le terminal : jless (arbre réductible avec navigation style vim), JQ_COLORS pour les thèmes de couleurs personnalisés, jq -C | less -Rpour la pagination colorée, les alias shell pour l'usage quotidien, et fx comme alternative basée sur Node.js. Pour les scripts, CI/CD et les flux de validation, consultez le guide complémentaire Formater du JSON en Bash. Pour un visualiseur dans le navigateur sans installation, l'outil Embellisseur JSON fonctionne instantanément. Les exemples sont testés sur Bash 5.x (macOS via Homebrew, Ubuntu 22.04+) et sont compatibles avec Bash 3.2+ (shell système macOS).
- •
jless— le meilleur visualiseur JSON interactif pour le terminal : arbre réductible, touches vim, recherche incrémentale - •
jq -C . | less -R— paginateur défilable et coloré sans installation supplémentaire au-delà de jq - •
JQ_COLORS— variable d'environnement qui personnalise le schéma de couleurs ANSI de jq pour chaque type JSON - •
fx— visualiseur JSON interactif en Node.js avec support souris et expressions de filtre JavaScript - •
alias jv='jless'— une commande d'un mot transforme la visualisation interactive en réflexe musculaire
Visualisation JSON Interactive vs. Scriptée
Rediriger du JSON vers jq .est le bon choix quand vous voulez une sortie formatée pour un petit payload, ou quand le résultat alimente une autre commande. C'est le mauvais choix quand vous avez besoin d'explorerune réponse API à 200 champs — la sortie défile au-delà de la fenêtre du terminal et ne vous laisse aucun moyen de naviguer, réduire des sections ou rechercher un champ spécifique sans relancer la commande avec un filtre. Les visualiseurs JSON interactifs affichent la même sortie formatée et colorée dans un paginateur persistant où vous contrôlez la navigation. Les données sont identiques ; la différence est l'interface.
# jq . — la sortie défile hors de l'écran pour les grandes réponses curl -s https://api.github.com/users/torvalds | jq . # Plus de 300 lignes défilent — vous perdez le contexte immédiatement
# jless — ouvre un paginateur interactif, rien ne défile hors de l'écran curl -s https://api.github.com/users/torvalds | jless # Document complet visible, réductible, recherchable avec j/k/h/l
jq avec des filtres explicites et la gestion des codes de sortie. Le guide Formater du JSON en Bash couvre ces patterns de scripting.jless — Visualiseur JSON Interactif
jlessest un visualiseur JSON en terminal conçu spécifiquement pour cet usage. Contrairement à un simple pipe jq, il affiche le document sous la forme d'un arbre réductible persistant : chaque objet et tableau peut être développé ou réduit indépendamment avec l et h, la navigation utilise les touches style vim, et la recherche incrémentale trouve instantanément n'importe quelle clé ou valeur. Il transmet l'entrée de manière incrémentale, ouvrant ainsi les grands fichiers et les réponses API en moins d'une seconde quelle que soit leur taille — alors que jq met en mémoire tampon l'intégralité du document avant d'afficher quoi que ce soit. Je me tourne instinctivement vers jless dès qu'une réponse API est trop grande pour être parcourue d'un coup d'œil.
Installation
# macOS brew install jless # Linux — binaire précompilé depuis GitHub Releases curl -sL https://github.com/PaulJuliusMartinez/jless/releases/latest/download/jless-x86_64-unknown-linux-gnu.tar.gz \ | tar xz sudo mv jless /usr/local/bin/ # Vérifier jless --version
Utilisation de base
# Ouvrir un fichier local — le visualiseur arbre interactif se lance immédiatement jless api-response.json # Rediriger n'importe quel flux JSON directement vers jless curl -s https://api.github.com/users/torvalds | jless # Ouvrir avec tous les nœuds réduits au niveau supérieur (point de départ utile pour les grands documents) jless --mode line api-response.json # Charger un élément de tableau spécifique et le visualiser isolément jq '.[0]' deployments.json | jless
Navigation et recherche en pratique
# Dans jless : # # j / ↓ descendre # k / ↑ monter # l / → développer le nœud (ou Entrée) # h / ← réduire le nœud # H réduire actuel + tous les frères → vue d'ensemble de haut niveau # L développer tout récursivement # # / lancer la recherche vers l'avant — tapez un nom de clé et appuyez sur Entrée # n / N résultat de recherche suivant / précédent # # g / gg aller au début # G aller à la fin # q quitter
Référence des Raccourcis Clavier de jless
Tous les raccourcis sont disponibles immédiatement après l'ouverture de jless — aucune configuration requise. Le modèle de navigation est intentionnellement identique à vim pour que la mémoire musculaire existante soit transférable.
jq -C | less -R — Pagination Colorée Sans Outils Supplémentaires
Si jless n'est pas installé et que vous avez besoin d'une vue défilable et colorée d'une réponse JSON, jq -C . | less -R est une solution de repli capable. L'option -C force les codes couleur ANSI même quand stdout est un pipe (normalement jq les supprime), et -Rindique à less de rendre ces codes au lieu de les imprimer comme du texte littéral. Le résultat est un document entièrement coloré et défilable — sans la structure d'arbre interactif de jless. La navigation dans less utilise les touches fléchées ou les touches style vim j/k, et / déclenche la recherche textuelle intégrée de less.
# Paginateur coloré de base jq -C . response.json | less -R # Depuis une réponse curl — -s empêche la barre de progression de corrompre le flux JSON curl -s https://api.github.com/repos/jqlang/jq | jq -C . | less -R # Trier les clés pour faciliter la lecture visuelle, puis paginer jq -CS . config.json | less -R # -C = forcer la couleur, -S = trier les clés (les deux options combinées) # Ajouter un alias pour ne plus jamais taper le pipe complet alias jqv='jq -C . | less -R' # Utilisation : cat response.json | jqv # ou : curl -s https://api.example.com/status | jqv
jq -C | less -Rmet en mémoire tampon toute la sortie formatée avant que less puisse l'afficher. Sur un fichier de 200 Mo, cela signifie attendre plusieurs secondes et consommer beaucoup de mémoire — la même limitation que jq . simple. Pour les grands fichiers, utilisez jless à la place, qui transmet de manière incrémentale.JQ_COLORS — Thèmes de Couleurs Personnalisés
JQ_COLORSest une variable d'environnement qui remplace le schéma de couleurs ANSI par défaut de jq. Elle prend une chaîne de sept codes d'attribut ANSI;couleur séparés par des deux-points, un par type JSON dans cet ordre fixe : null : false : true : nombres : chaînes : tableaux : objets. Chaque code est au format attribut;couleuroù l'attribut est 0 (normal), 1 (gras), 2 (atténué) ou 4 (souligné), et la couleur est un numéro de couleur ANSI standard (30–37 = standard, 90–97 = vif).
# Référence des couleurs ANSI pour construire JQ_COLORS : # Attributs : 0=normal 1=gras 2=atténué 4=souligné # Couleurs : 30=noir 31=rouge 32=vert 33=jaune # 34=bleu 35=magenta 36=cyan 37=blanc # Vives : 90=noir-vif 91=rouge-vif 92=vert-vif 93=jaune-vif # 94=bleu-vif 95=magenta-vif 96=cyan-vif 97=blanc-vif # # Ordre : null : false : true : nombres : chaînes : tableaux : objets # Thème à contraste élevé pour terminaux sombres (recommandé) export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96" # null=gris-atténué, false=rouge-vif, true=vert-vif, # nombres=jaune-vif, chaînes=vert, tableaux=cyan-gras, objets=cyan-gras # Thème style Solarized export JQ_COLORS="2;37:0;35:0;35:0;36:0;33:1;34:1;34" # null=blanc-atténué, false=magenta, true=magenta, # nombres=cyan, chaînes=jaune, tableaux=bleu-gras, objets=bleu-gras # Minimal (clés en gras uniquement, tout le reste simple) export JQ_COLORS="0;90:0;39:0;39:0;39:0;39:1;39:1;39"
# Ajouter le thème choisi à ~/.bashrc ou ~/.zshrc pour qu'il s'applique à chaque appel de jq
echo 'export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"' >> ~/.bashrc
source ~/.bashrc
# Tester le thème
echo '{"active":true,"errors":null,"count":42,"tags":["api","v2"],"meta":{"version":"1.0"}}' | jq .JQ_COLORSdoit avoir exactement sept valeurs séparées par des deux-points. Si la chaîne a moins de segments, jq revient silencieusement à ses valeurs par défaut intégrées sans aucun message d'erreur — rendant une mauvaise configuration difficile à diagnostiquer. Testez toujours une nouvelle chaîne de couleurs sur un court payload JSON avant de l'ajouter à votre profil shell.Alias Shell pour la Visualisation JSON Quotidienne
Les commandes pour la visualisation JSON interactive sont verbeuses par défaut. Un petit ensemble d'alias dans ~/.bashrc ou ~/.zshrctransforme jless et la pagination colorée en commandes d'un seul mot qui s'intègrent naturellement dans n'importe quel flux de travail. Les alias ci-dessous se composent — jv et jvp acceptent tous deux une entrée redirigée ou un nom de fichier comme premier argument.
# Ajouter à ~/.bashrc ou ~/.zshrc
# jv — visualiseur interactif (jless si disponible, paginateur coloré en solution de repli)
jv() {
if command -v jless &>/dev/null; then
jless "$@"
else
jq -C . "$@" | less -R
fi
}
# jvp — visualiser avec les clés triées alphabétiquement (utile pour comparer des réponses)
alias jvp='jq -CS . | less -R'
# jvc — visualiser depuis le presse-papiers (macOS)
alias jvc='pbpaste | jless'
# jvf — visualiser et filtrer : jvf '.users[0]' response.json
jvf() {
local filter="$1"; shift
jq -C "$filter" "$@" | less -R
}
# Recharger sans redémarrer le terminal
source ~/.bashrc# Exemples d'utilisation après avoir ajouté les alias ci-dessus # Visualiser n'importe quel fichier ou réponse redirigée jv deployment-config.json curl -s https://api.github.com/users/torvalds | jv # Visualiser trié (facile à parcourir alphabétiquement) cat feature-flags.json | jvp # Explorer un sous-document interactivement jvf '.database' infra/app-config.json jvf '.users[] | select(.role == "admin")' users.json
bat — Visualisation de Fichiers JSON avec Coloration Syntaxique
bat est un remplacement de cat avec coloration syntaxique, numéros de ligne et un paginateur intégré. Pour les fichiers JSON sur disque, il offre une expérience de lecture propre, façon éditeur, sans ouvrir un éditeur de texte complet. Contrairement à jless, bat affiche le fichier en texte statique — sans réduction, sans recherche, sans navigation au-delà du défilement. Son point fort est la clarté visuelle pour les fichiers statiques de taille moyenne (configs, fixtures, payloads de test) où vous voulez la coloration syntaxique et les numéros de ligne mais n'avez pas besoin de navigation d'arbre interactive.
# macOS brew install bat # Debian / Ubuntu (le binaire peut s'appeler batcat) apt-get install -y bat # alias bat=batcat # à ajouter à ~/.bashrc si nécessaire sur Ubuntu # Visualiser un fichier JSON avec coloration syntaxique et numéros de ligne bat config/feature-flags.json # Désactiver le paginateur — imprimer directement dans le terminal (utile dans les scripts) bat --paging=never api-response.json # Combiner avec jq : formater avec jq, visualiser avec bat (préserve la coloration JSON de bat) jq '.' response.json | bat --language=json --paging=never
batpour lire les fichiers de configuration statiques et les fixtures de test où les numéros de ligne sont importants (par ex., quand un échec de test fait référence à la ligne 47 d'un fichier fixture). Pour les réponses API et le JSON dynamique provenant de curl, jless est plus rapide à ouvrir et plus pratique à naviguer. Si vous devez visualiser dans le navigateur et partager avec un collègue, collez directement dans l'outil Embellisseur JSON — sans terminal requis.fx — Explorateur JSON Interactif en Node.js
fx est un visualiseur JSON interactif basé sur Node.js. Son interface est similaire à jless — arbre réductible, navigation clavier, recherche — mais ajoute deux fonctionnalités absentes de jless : le support de la souris (clic pour développer/réduire les nœuds) et la possibilité de saisir une expression JavaScript dans la barre inférieure pour filtrer le document en temps réel. Pour les équipes déjà sous Node.js, fx est un choix naturel et ne nécessite pas de binaire séparé. Pour les environnements de terminal pur sans Node, jless est le choix le plus léger.
# Installer globalement via npm npm install -g fx # Ou exécuter sans installer (npx met le paquet en cache) curl -s https://api.github.com/users/torvalds | npx fx # Utilisation interactive de base fx api-response.json curl -s https://api.github.com/repos/jqlang/jq | fx # Dans fx : les touches fléchées naviguent, Entrée développe/réduit, / recherche # La barre inférieure accepte les expressions JavaScript pour le filtrage en direct : # .name → afficher uniquement le champ "name" # .repos.slice(0,5) → 5 premiers repos
# fx fonctionne aussi comme formateur non interactif (comme jq . mais avec syntaxe JS)
# Passez une expression JavaScript en argument — pas de mode interactif
echo '{"users":[{"id":1,"name":"Thomas Dupont"},{"id":2,"name":"Claire Martin"}]}' \
| fx '.users[0].name'
# Thomas Dupont
# Enchaîner avec map pour les transformations de tableau
cat deployments.json | fx '.items.map(d => ({id: d.deploy_id, status: d.state}))'Erreurs Courantes
Ces quatre erreurs reviennent régulièrement quand les développeurs commencent à utiliser les visualiseurs JSON en terminal — chacune a une correction claire une fois que vous comprenez pourquoi elle survient.
Problème : jq . déverse toute la sortie sur stdout d'un coup. Pour les réponses plus longues que la hauteur du terminal, tout ce qui est au-dessus du dernier écran disparaît — vous ne pouvez pas revenir au début ni naviguer vers un champ spécifique.
Solution : Redirigez vers jless pour la navigation interactive, ou utilisez jq -C . | less -R comme solution de repli. Les deux maintiennent l'intégralité du document accessible quelle que soit sa taille.
# Réponse API de 300 lignes — les 280 premières défilent immédiatement curl -s https://api.github.com/users/torvalds | jq . # Seule la partie inférieure de la sortie est visible — impossible de revenir en arrière
# Le document complet reste accessible dans jless — rien n'est perdu curl -s https://api.github.com/users/torvalds | jless # j/k pour défiler, h/l pour réduire/développer, / pour rechercher
Problème : JQ_COLORS nécessite exactement sept valeurs séparées par des deux-points. Si la chaîne a six ou huit valeurs, jq ignore silencieusement toute la variable et revient à ses valeurs par défaut compilées — sans avertissement, sans erreur, juste les mauvaises couleurs.
Solution : Comptez les deux-points : une chaîne JQ_COLORS valide a exactement six deux-points et sept valeurs. Faites un echo de la variable et redirigez vers tr pour compter.
# Seulement 6 valeurs — jq utilise les valeurs par défaut silencieusement, sans indication du pourquoi
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96"
echo '{"ok":true}' | jq . # couleurs inchangées — aucune erreur affichée# Exactement 7 valeurs — 6 deux-points export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96" # Vérifier le compte avant d'ajouter au profil shell echo "$JQ_COLORS" | tr -cd ':' | wc -c # doit afficher 6
Problème : jless et fx affichent leur interface interactive vers le terminal (un TTY), pas vers stdout. Les rediriger vers grep, tee ou toute autre commande produit des codes d'échappement ANSI désordonnés ou une sortie vide — la sortie interactive du visualiseur n'est pas conçue pour être consommée par d'autres programmes.
Solution : Utilisez jq avec un filtre explicite pour extraire des données de manière programmatique. Utilisez jless et fx uniquement comme dernière étape dans un pipeline quand un humain lit la sortie.
# La sortie de jless est pour les yeux humains — la rediriger produit du bruit jless response.json | grep "request_id" # Sortie : codes d'échappement ANSI et séquences de curseur, pas du texte propre
# Utilisez jq pour l'extraction programmatique — propre et composable jq -r '.request_id' response.json | grep "req_" # Utilisez jless uniquement comme point final du terminal — rien après lui jless response.json
Problème : -C force les codes couleur ANSI dans le flux de sortie. Quand ce flux est imprimé directement sur un terminal qui n'est pas en mode raw — ou redirigé vers un outil qui n'interprète pas ANSI — les séquences d'échappement apparaissent comme des caractères littéraux tels que ^[[1;34m qui encombrent la sortie.
Solution : Associez toujours jq -C à less -R. L'option -R met less en mode d'entrée raw, lui indiquant de rendre les séquences ANSI comme des couleurs plutôt que de les imprimer comme du texte.
# -C sans -R : les séquences d'échappement s'impriment comme du texte brut jq -C . response.json | less # Sortie : ^[[1;34m"status"^[[0m: ^[[0;32m"ok"^[[0m ...
# -C avec -R : les codes ANSI sont rendus comme de vraies couleurs jq -C . response.json | less -R # Sortie : JSON coloré, propre et lisible
jless vs jq vs bat vs fx — Comparaison des Visualiseurs Interactifs
Les quatre outils affichent du JSON coloré, mais leurs capacités interactives diffèrent significativement. Choisissez selon que vous avez besoin de navigation réductible, de recherche ou de support souris — et selon que Node.js est déjà dans votre environnement.
Pour la plupart des situations : installez jless une fois et utilisez-le comme visualiseur interactif par défaut. Gardez jq -C . | less -R comme solution de repli pour les environnements où vous ne pouvez pas installer de binaires supplémentaires. Ajoutez fx si votre équipe est principalement Node.js et apprécie la navigation souris ou le filtrage JavaScript en direct.
Questions Fréquemment Posées
Comment rechercher une clé spécifique dans un fichier JSON depuis le terminal ?
Dans jless, appuyez sur / pour ouvrir l'invite de recherche incrémentale, tapez le nom de la clé et appuyez sur Entrée. Utilisez n pour avancer dans les correspondances et N pour reculer. La recherche est sensible à la casse par défaut. Dans jq -C | less -R, / déclenche la recherche intégrée de less, qui correspond au texte brut y compris les codes couleur ANSI — la recherche de jless est plus fiable pour le JSON structuré.
# Ouvrir le fichier dans jless, puis appuyer sur / pour rechercher jless api-response.json # Dans jless : tapez / → "request_id" → Entrée → n pour la correspondance suivante # Alternative avec jq : extraire et afficher toutes les clés correspondantes sur stdout jq '.. | objects | with_entries(select(.key == "request_id"))' api-response.json
Comment naviguer dans une structure JSON profondément imbriquée avec des raccourcis clavier ?
jless imite la navigation vim : j/k pour haut/bas, h pour réduire un nœud, l pour le développer. Appuyez sur H pour réduire le nœud actuel et tous ses frères en même temps — utile pour avoir une vue d'ensemble avant de plonger dans une branche spécifique. L développe tout récursivement. Une fois que vous avez tout réduit au niveau supérieur, développez uniquement le chemin qui vous intéresse avec l.
# Ouvrir la réponse dans jless curl -s https://api.github.com/repos/jqlang/jq | jless # Dans jless : # H → réduire toutes les clés de niveau supérieur # j/k → naviguer jusqu'à la clé voulue # l → développer uniquement cette branche # gg → retourner à la racine # G → sauter au dernier élément
Comment rendre la sortie colorée de jq plus lisible sur un terminal sombre ?
Définissez la variable d'environnement JQ_COLORS avec des codes d'attribut ANSI;couleur pour chaque type JSON. Les sept positions sont, dans l'ordre : null, false, true, nombres, chaînes, tableaux, objets. Placez l'export dans ~/.bashrc ou ~/.zshrc pour l'appliquer à chaque appel de jq. Les couleurs vives et en gras fonctionnent mieux sur les fonds sombres.
# Thème à contraste élevé pour terminaux sombres — à ajouter à ~/.bashrc ou ~/.zshrc
export JQ_COLORS="1;30:0;91:0;92:0;93:0;32:1;96:1;96"
# null=gris, false=rouge-vif, true=vert-vif,
# nombres=jaune-vif, chaînes=vert, tableaux/objets=cyan-vif
# Tester immédiatement sans recharger le shell
echo '{"active":true,"errors":0,"tags":["api","v2"]}' | jq .Quelle est la différence entre jless et jq . pour visualiser du JSON ?
jq . fait défiler la sortie au-delà du haut du terminal et ne vous donne aucun moyen de revenir en arrière — utile pour les petites réponses, mais peu pratique pour tout ce qui dépasse 50 lignes. jless affiche l'intégralité du document dans un paginateur interactif où vous pouvez faire défiler, rechercher, réduire les nœuds et naviguer avec des raccourcis clavier sans perdre le contexte. Utilisez jq . pour un coup d'œil rapide sur un petit payload ; utilisez jless lorsque vous avez besoin d'explorer.
# Petit payload — jq . convient parfaitement
echo '{"status":"ok","version":"2.4.1"}' | jq .
# Grande réponse imbriquée — jless est plus adapté
curl -s https://api.github.com/repos/jqlang/jq | jless
# → arbre interactif, aucune sortie ne défile hors de l'écranComment visualiser du JSON d'une réponse curl de manière interactive dans le terminal ?
Redirigez curl directement vers jless. Incluez toujours -s (silencieux) pour empêcher la barre de progression de curl d'apparaître dans la sortie. jless ouvrira le visualiseur interactif avec la réponse complète rendue sous forme d'arbre réductible. Si jless n'est pas installé, jq -C . | less -R offre un paginateur coloré en solution de repli.
# Exploration interactive avec jless curl -s https://api.github.com/users/torvalds | jless # Paginateur coloré en solution de repli (sans réduction, mais défilable avec couleur) curl -s https://api.github.com/users/torvalds | jq -C . | less -R
Puis-je visualiser plusieurs fichiers JSON côte à côte dans le terminal ?
jless ouvre un fichier à la fois. Pour une comparaison côte à côte, utilisez un multiplexeur de terminal : tmux split-window -h ouvre un fractionnement vertical, puis exécutez jless dans chaque volet avec un fichier différent. Alternativement, utilisez l'outil JSON Diff basé sur le navigateur si vous avez besoin de comparer deux documents structurellement.
# tmux côte à côte : diviser horizontalement, puis exécuter jless dans chaque volet tmux split-window -h # Volet gauche : jless response-v1.json # Volet droit : jless response-v2.json # Ou utiliser diff sur la sortie normalisée par jq pour un diff textuel diff <(jq -S . response-v1.json) <(jq -S . response-v2.json)
Outils Associés
L'outil Embellisseur JSON vous offre la même vue réductible et colorée que jless — directement dans le navigateur, sans installation et sans terminal requis.
Cora is a platform engineer who builds developer tooling and internal platforms, using Bash as the glue that connects components written in different languages and runtimes. She writes about cross-platform shell scripting, Bash utility functions, environment management, configuration templating, and the practical shell techniques that platform engineers use to build self-service tooling for development teams.
Nadia is a site reliability engineer who lives in the terminal. She writes Bash scripts that process logs, transform data, and orchestrate infrastructure across fleets of servers. She is a heavy user of jq, awk, and sed and writes about shell one-liners, text processing pipelines, data serialisation from the command line, and the practical Bash patterns that SREs reach for when speed matters more than elegance.