Outil de requête JSON (façon jq)
Interrogez et transformez des données JSON avec une syntaxe de type jq. Extrayez, filtrez et réorganisez avec pipes, selects, maps, sort_by, unique, flatten et plus encore.
Mis à jour le
JSON Query (jq-like)
Query and transform JSON data using jq-like syntax. Extract, filter, and reshape JSON with a powerful mini query language.
JSON Input
Result
Query Error
Unknown accessor: .users[].name
jq Syntax Reference
Access
.Identity (whole doc).keyObject key.a.bNested key.[]Iterate array.[0]Array index.[0:3]Array sliceTransforms
lengthArray/string lengthkeysObject keysvaluesObject valuesuniqueDeduplicateflattenFlatten nested arraysfirst / lastFirst/last elementFilter & Map
select(.k == "v")Filter by conditionmap(.key)Map over arraysort_by(.key)Sort by field|Pipe / chain opsQuestions Fréquentes
Qu'est-ce que l'outil JSON Query (type jq) ?
L'outil JSON Query (type jq) est un outil en ligne gratuit qui interroge et transforme des données JSON à l'aide d'une syntaxe proche de jq. Extrayez, filtrez et restructurez avec des pipes, des selects, des maps, sort_by, unique, flatten et bien plus. Il fonctionne entièrement dans votre navigateur, sans installation ni inscription.
Quelle syntaxe jq ?
Accès par point (.key), itération de tableaux (.[], .[0]), découpage (.[0:3]), pipes (|), filtres select, map, sort_by, unique, flatten, keys, values, length, first et last.
Est-ce le jq complet ?
Non : il couvre les motifs les plus utilisés. Le jq complet comporte des centaines de fonctions intégrées ; cet outil gère les 18 opérations qui couvrent 90 % des requêtes courantes.
Mon JSON est-il sécurisé ?
Oui. Tout le traitement se fait dans votre navigateur. Aucune donnée n'est envoyée à un serveur.
L'outil JSON Query (type jq) est-il gratuit ?
Oui, l'outil JSON Query (type jq) est 100 % gratuit, sans inscription, sans frais cachés et sans limite d'utilisation. Tout le traitement se fait localement dans votre navigateur, garantissant une confidentialité totale.
Mes données sont-elles en sécurité avec cet outil ?
Absolument. L'outil JSON Query (type jq) traite tout côté client, dans votre navigateur. Aucune donnée n'est envoyée ni stockée sur un serveur. Votre contenu reste privé sur votre appareil à tout moment.
L'outil JSON Query (type jq) fonctionne-t-il sur les appareils mobiles ?
Oui, l'outil JSON Query (type jq) est entièrement responsive et fonctionne sur smartphones et tablettes. Vous pouvez l'utiliser sur tout appareil doté d'un navigateur web moderne, sans téléchargement d'application.
Dois-je créer un compte pour utiliser cet outil ?
Aucun compte ni inscription n'est nécessaire. Ouvrez simplement l'outil JSON Query (type jq) dans votre navigateur et commencez à l'utiliser immédiatement. Pas de barrière d'inscription ni de restriction d'utilisation.
Comment utiliser l'outil JSON Query (type jq) ?
Saisissez simplement vos données dans le champ prévu, ajustez les paramètres selon vos préférences, et l'outil les traitera instantanément. Vous pouvez ensuite copier le résultat dans le presse-papiers ou le télécharger.
Quels navigateurs sont pris en charge ?
L'outil JSON Query (type jq) fonctionne dans tous les navigateurs modernes, dont Chrome, Firefox, Safari, Edge et Opera. Pour une expérience optimale, utilisez la dernière version de votre navigateur préféré.
À quoi sert le tube (|) dans une requête jq ?
Le tube transmet le résultat d'une étape à la suivante, si bien qu'une requête se lit de gauche à droite comme une petite chaîne de montage. Dans ".users | select(.active == true) | map(.name)", la première étape récupère le tableau des utilisateurs, la deuxième ne garde que les éléments où active vaut true, et la troisième ne projette que le nom de chaque enregistrement restant. Chaque étape s'applique à ce que l'étape précédente a produit, ce qui explique pourquoi l'ordre compte : on réduit généralement d'abord à un tableau, puis on filtre, puis on projette ou on trie. Sans le tube, vous seriez limité à une seule expression d'accès. Le chaînage permet de transformer une réponse d'API profondément imbriquée en exactement les valeurs voulues, en une seule ligne. Tapez une requête avec des tubes dans la barre ci-dessus et le résultat se met à jour en direct à mesure que vous construisez chaque étape.
Comment extraire un seul champ de chaque élément d'un tableau JSON ?
Utilisez map avec un chemin en pointillés pour projeter un champ hors de chaque élément. Pour une liste d'utilisateurs, ".users | map(.email)" renvoie un tableau plat contenant uniquement les adresses e-mail, en écartant tous les autres champs. C'est le moyen le plus rapide de transformer une liste JSON verbeuse en une seule colonne à parcourir, copier ou coller dans un tableur. Si vous ne voulez que les valeurs uniques, enchaînez unique à la fin : ".users | map(.role) | unique" supprime les répétitions pour ne voir chaque rôle distinct qu'une seule fois. Vous pouvez aussi atteindre des champs imbriqués, comme map(.address.city), tant que le chemin existe sur chaque élément. Le panneau de résultat indique le nombre d'éléments, ce qui permet de confirmer que vous avez bien une valeur par enregistrement. Collez votre tableau ci-dessus et exécutez une requête map pour extraire la colonne dont vous avez besoin.
Pourquoi ma requête renvoie-t-elle une erreur « Cannot slice non-array » ou une incompatibilité de type ?
La plupart des erreurs de requête viennent de l'application d'une opération au mauvais type de valeur. Le découpage avec .[0:3], l'indexation avec .[0], et des fonctions comme unique, flatten et sort_by attendent tous un tableau, donc les pointer vers un objet ou une chaîne de caractères déclenche une incompatibilité de type plutôt qu'une supposition. Une cause fréquente est l'oubli d'une étape : ".[0]" échoue sur un document dont le niveau supérieur est un objet, alors que ".users[0]" fonctionne parce que .users est bien le tableau. L'outil affiche une erreur en langage clair expliquant ce qui a mal tourné plutôt que d'échouer silencieusement, ce qui permet de repérer facilement qu'il faut d'abord descendre dans une clé. Vérifiez que la valeur à cet endroit est bien une liste, en exécutant par exemple juste le chemin avant l'opération qui échoue. Ajustez le chemin dans la barre de requête ci-dessus et le résultat se recalcule instantanément pour confirmer la correction.
Comment filtrer du JSON pour ne garder que les enregistrements qui correspondent à une condition ?
Utilisez select avec une comparaison entre parenthèses pour ne garder que les éléments voulus. ".users | select(.role == "admin")" renvoie uniquement les comptes administrateurs, tandis que ".users | select(.age >= 18)" garde tous les majeurs. Les comparaisons prises en charge sont ==, !=, >, <, >= et <=, les opérateurs d'ordre (>, <, >=, <=) étant destinés aux nombres, alors que == ou != fonctionnent aussi bien sur les chaînes, les nombres et les booléens. Comme select s'exécute sur chaque élément d'un tableau, on lui transmet normalement d'abord un tableau via le tube. Combinez-le avec map pour filtrer puis projeter en une seule passe, comme ".users | select(.active == true) | map(.name)". Le panneau de résultat indique combien d'éléments ont survécu au filtre, une vérification rapide pour confirmer que l'ensemble a bien été réduit comme prévu. Essayez une requête select ci-dessus sur vos propres données ou sur l'exemple intégré.
Comment récupérer le dernier élément ou compter le nombre d'enregistrements dans du JSON ?
Pour compter, faites passer un tableau dans length via le tube : ".users | length" renvoie le nombre d'utilisateurs, et sur une chaîne ou un objet, cela renvoie plutôt le nombre de caractères ou de clés. Pour récupérer les extrémités sans connaître la taille, utilisez first et last, comme dans ".metadata.tags | last", ou indexez depuis la fin avec un nombre négatif comme .[-1], que l'outil résout par rapport à la longueur du tableau. Ces fonctions sont pratiques pour des vérifications ponctuelles, comme compter les enregistrements avant et après un filtre pour voir combien select en a retiré, ou lire l'entrée la plus récente dans un tableau de type journal. Le panneau de résultat indique aussi le type de la sortie et le nombre d'éléments, en plus du poids en octets, ce qui donne une seconde confirmation du chiffre. Chargez votre JSON ci-dessus et transmettez-le à length, first ou last pour lire les chiffres dont vous avez besoin.
Outils Associés
Générateur de Mots de Passe Sécurisés Gratuit
Générez des mots de passe sécurisés et aléatoires avec des options personnalisables. Gratuit, rapide et fonctionne entièrement dans votre navigateur sans inscription.
Générateur de UUID/GUID Gratuit
Générez des identifiants universels uniques (UUID/GUID). Gratuit, rapide et fonctionne entièrement dans votre navigateur sans inscription.
Générateur de Codes QR Gratuit en Ligne
Générez des codes QR pour des URL, du texte, des identifiants WiFi et plus encore. Gratuit, rapide et fonctionne entièrement dans votre navigateur sans inscription.
Formateur et Validateur JSON Gratuit
Formatez, validez et embellissez des données JSON avec coloration syntaxique et détection d'erreurs. Gratuit, rapide et fonctionne entièrement dans votre navigateur sans inscription.
À propos de l'outil de requête JSON (façon jq)
L'outil de requête JSON est un terrain de jeu gratuit, entièrement dans le navigateur, pour découper, filtrer et remodeler du JSON avec une syntaxe façon jq. Collez un document JSON à gauche, tapez une requête dans la barre en haut, et le résultat correspondant apparaît à droite en se mettant à jour en direct à chaque frappe. Il est pensé pour les développeurs, les data engineers, les testeurs QA, et pour quiconque a déjà fixé un mur de JSON renvoyé par une API en se demandant comment n'en extraire que les trois champs qui comptent vraiment.
jq est l'outil en ligne de commande de référence pour traiter du JSON, mais il n'est pas toujours installé et sa syntaxe complète est dense. Cet outil reproduit les usages les plus courants dans un onglet de navigateur — pas de brew install, pas de terminal, pas d'échappement de guillemets dans votre shell. Tout s'exécute localement en JavaScript : votre JSON ne quitte jamais votre appareil, ce qui compte quand la donnée est une réponse de production, un jeton d'authentification, ou tout autre contenu que vous préférez ne pas coller sur un serveur externe.
Le langage de requête pris en charge
L'outil embarque un interpréteur ciblé couvrant environ 18 opérations — celles qui répondent à la grande majorité des questions du quotidien sur un document JSON :
- Accès —
.renvoie le document entier,.keylit un champ,.a.bparcourt des clés imbriquées,.[]itère sur les valeurs d'un tableau ou d'un objet,.[0]indexe (les valeurs négatives comme.[-1]comptent depuis la fin), et.[0:3]découpe une plage. - Transformations —
lengthcompte les éléments ou les caractères,keysliste les clés d'un objet (triées),valuesrenvoie ses valeurs,uniquesupprime les doublons,flattenaplatit des tableaux imbriqués, etfirst/lastrécupèrent les extrémités d'un tableau. - Filtrage et projection —
select(.role == "admin")conserve les éléments correspondants,map(.age)projette un champ hors de chaque élément, etsort_by(.age)ordonne un tableau selon un champ.
Les comparaisons à l'intérieur de select prennent en charge ==, !=, >, <, >= et <=, les opérateurs d'ordre s'appliquant aux nombres. Le tube | enchaîne les étapes, si bien que .users | select(.active == true) | map(.name) se lit de gauche à droite : prendre les utilisateurs, ne garder que les actifs, puis n'extraire que leur nom.
Comment on l'utilise concrètement
Tapez une requête et le résultat se recalcule à chaque frappe ; appuyez sur Entrée ou sur le bouton Exécuter pour l'enregistrer dans l'historique des requêtes (les 20 dernières sont conservées sous forme de puces cliquables). Une rangée de boutons de requêtes prédéfinies — identité, compter les utilisateurs, utilisateurs actifs, trier par âge, rôles uniques, et d'autres encore — sert à la fois de point de départ rapide et d'aide-mémoire syntaxique en direct. Un document d'exemple intégré est chargé par défaut afin que vous puissiez vous entraîner avant de coller vos propres données.
Le panneau de résultat indique le type de la sortie et le nombre d'éléments (par exemple array(3) ou object(5 keys)), ainsi que le poids en octets de votre entrée et du résultat, ce qui permet de vérifier rapidement qu'un filtre a bien réduit l'ensemble comme prévu. La sortie est du JSON mis en forme, que vous pouvez copier dans le presse-papiers ou télécharger sous forme de fichier query-result.json. Si une requête est mal formée ou provoque une incompatibilité de type — découper quelque chose qui n'est pas un tableau, par exemple — le panneau affiche une erreur en langage clair plutôt que d'échouer silencieusement.
Ce que l'outil apporte, et ses limites
Les usages typiques incluent l'extraction d'une seule colonne d'une liste renvoyée par une API (map(.email)), le comptage d'enregistrements avant et après un filtre, la déduplication d'un tableau de tags, la recherche des comptes administrateurs dans un export d'utilisateurs, ou le tri des résultats pour repérer d'un coup d'œil les valeurs les plus hautes et les plus basses. Il transforme une réponse de 200 lignes en réponse concrète en quelques secondes.
Il s'agit volontairement d'un sous-ensemble de jq, pas d'une réimplémentation complète. Le vrai jq compte des centaines de fonctions intégrées — arithmétique, interpolation de chaînes, reduce, group_by, descente récursive, fonctions personnalisées — qui sortent du cadre de cet outil. Si une requête repose sur des fonctionnalités au-delà de celles listées ci-dessus, exécutez-la avec le vrai jq en ligne de commande. Mais pour la tâche du quotidien « je veux juste ce champ », l'outil de requête JSON vous y emmène sans quitter le navigateur.