Aller au contenu

Bac à sable jq

jq Playground

Exécute des filtres jq 1.7 sur du JSON collé, directement dans le navigateur, avec un aide-mémoire et la ligne de commande correspondante.

Exécute des filtres jq sur un document dans le navigateur — un véritable interpréteur de la grammaire de jq 1.7 plutôt que quelques opérations sur les chaînes : les tubes, `reduce`, `def`, la déstructuration et les opérateurs de mise à jour se comportent donc comme en ligne de commande. La commande shell équivalente est imprimée sous le filtre.

🔒 Fonctionne entièrement dans votre navigateurjqjsonqueryplayground

Filtre

jq '.orders[] | select(.status == "shipped") | {id, customer}' data.json

JSON en entrée

Déposez un fichier .json

Lu dans cet onglet seulement. Rien n’est envoyé.

1 sortie

Sorties

1

Temps

<1 ms

Types

object

Un interpréteur de la grammaire jq 1.7, écrit ici. Il gère les chemins (.a[0].b, .., ?), |·,·//, l’arithmétique, les comparaisons, and/or/not, l’interpolation de chaînes, if, try, reduce, foreach, as (déstructuration comprise), def, les mises à jour comme |=·+=, les formats comme @base64·@csv, et les 180 fonctions intégrées ci-dessous. Les tests sont les exemples du manuel de jq lui-même.

Non pris en charge : input·inputs (il n’y a qu’un seul document), $ENV·env (vide), label·break, --stream, les tableaux imbriqués dans @sh, les formats autres qu’ISO 8601 dans strptime, le mode flux de getpath, et les modules (import). Les expressions régulières tournent sur le moteur du navigateur et non sur l’Oniguruma de jq, donc \p{L} et les groupes nommés fonctionnent, et il peut y avoir de subtiles différences autour du lookbehind.

Si tout ce que vous voulez est un seul chemin, le Testeur JSONPath est peut-être plus simple.

Comment s’en servir

  1. Collez le document

    Une valeur JSON, ou plusieurs à la suite — l'outil les lit comme un flux d'entrée jq, et leur nombre est indiqué dans le titre du panneau.

  2. Écrivez le filtre, ou prenez-en un dans la rangée d'exemples

    Les boutons couvrent les formes qui reviennent : select, map, group_by, l'interpolation de chaînes, reduce et les opérateurs de mise à jour. Survoler l'un d'eux dit ce qu'il fait.

  3. Réglez les options que vous utiliseriez en ligne de commande

    `-c` pour une ligne par sortie, `-S` pour trier les clés, `-r` pour des chaînes sans guillemets, `-s` pour aspirer plusieurs entrées dans un seul tableau. La ligne de commande en bas se met à jour avec elles.

  4. Copiez la commande, pas seulement la sortie

    La ligne `jq …` générée est correctement citée pour un shell POSIX : elle peut aller telle quelle dans un script ou un pipeline.

Questions fréquentes

Est-ce vraiment jq ?

C'est un interpréteur indépendant de la grammaire de jq, testé contre les exemples du manuel de jq lui-même. Cela couvre le langage et les fonctions intégrées courantes ; ce n'est pas une compilation de jq lui-même, donc tout ce qui dépend des entrailles C de jq différera.

Pourquoi `input` ne marche-t-il pas ?

Parce qu'il y a ici un document, pas un flux dans lequel un filtre peut aller en tirer d'autres. `input`, `inputs`, `$ENV`, `env`, `label`/`break`, `--stream` et les modules sont tous listés comme non pris en charge sur la page, plutôt que d'échouer mystérieusement.

Mon expression régulière ne se comporte pas comme celle de jq.

jq utilise Oniguruma ; ceci utilise le moteur du navigateur. En pratique, `\p{L}` et les groupes nommés fonctionnent dans les deux, et les différences apparaissent autour du lookbehind et de quelques échappements de classes de caractères. Si un motif compte, testez-le sur la machine qui l'exécutera.

Il s'est arrêté à 5 000 sorties.

Une limite délibérée, doublée d'une limite de pas. `..` sur un gros document produit une sortie énorme, et un filtre parti en récursion folle figerait sinon l'onglet. Resserrez le filtre, ou exécutez-le en ligne de commande, là où vous pouvez le passer à `head`.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.