Preskočiť na obsah

jq filter builder

Premeniť JSON dokument na funkčný jq filter a hneď vidieť jeho výsledok.

Vstup
Výstup

jq filter builder

Vložiž JSON dokument a tento nástroj vypíše všetky cesty k poliam, aké v ňom zistí — v samotnej syntaxi jq s bodkami a zátvorkami: .users[].email, .items[0].price a tak ďalej — aby si nemusel hádať štruktúru údajov, ktoré si sám nenavrhnul. Vyber jednu z týchto ciest, alebo napíš vlastnú, a nástroj okolo nej vytvorí funkčný jq filter.

Možnosť operácie určuje, aký druh filtru sa vytvorí. Výber (Select) vráti hodnotu alebo hodnoty na ceste, po jednej na riadok, presne tak, ako to tlačí čistý jq. Mapovanie (Map) zabalí rovnaké hodnoty do jedného JSON poľa so štvorcovými zátvorkami. Filtrovaní (Filter) potrebuje cestu končiacu sa [] a podmienku ako age > 18 alebo status == "active" — ponecháva len prvky, ktoré podmienke vyhovujú, používajúc select() skrytom pozadí. Agregácia (Aggregate) je nasmerovaná na celé pole (bez koncového []) a hlási jeho počet, a — keď je každý prvok číslom — aj súčet, minimum a maximum; pridaj podmienku na agregáciu len prvkov, ktoré ju spĺňajú.

Výstup raw stringu odstraňuje úvodzovky z reťazcových výsledkov, čo sa zhoduje s vlajkou -r v jq; kompaktný výstup zbalí JSON na jeden riadok namiesto odsadenia dvomi medzerámi. Možnosť verzie syntaxe jq označí vygenerovaný filter komentárom pre jq 1.5, 1.6 alebo 1.7 — užitočné, keď pripevňuješ kanál na konkrétnu verziu — bez zmeny toho, ako náhľad počíta, pretože podmnožina jq, ktorú tento nástroj implementuje, sa správa rovnako naprieč všetkými tromi. Podmienky podporujú ==, !=, >, >=, <, <= a contains, a porovnávajú s číslami, reťazcami, booleanmi, null alebo citovaným textom.

Všetko beží lokálne v tvojom prehliadači: JSON, ktorý vložíš, filter, ktorý vytváraš, a výsledok, ktorý vytvára, nikdy neopúšťajú tvoje zariadenie. Keď si spokojný s filtrom, skopíruj výsledok, stiahnite si ho ako súbor .txt, alebo pošli výstup späť do vstupu a pokračuj v refinácii.

Časté otázky

Spúšťa to skutočný binárny súbor jq?
Nie. Implementuje praktickú podmnožinu syntaxe cesty jq a operácie v JavaScripte, takže rovnaký filter, ktorý tu vidíš, by mohol potrebovať úpravu na okrajové prípady, ktoré by úplná inštalácia jq zvládla.
Prečo Filter potrebuje cestu končiacu sa []?
Filtrovanie ponechá alebo zahodí jednotlivé prvky poľa, takže cesta musí pomenúť iterovanú zbierku — .users[] namiesto .users. Nástroj ti to povie, ak to tak nie je.
Čo pole podmienky akceptuje?
Meno poľa plus operátor a hodnota, ako age > 18 alebo status == "active", alebo len operátor a hodnota (> 10) na porovnanie prvkov poľa priamo. Podporované operátory sú ==, !=, >, >=, <, <= a contains.
Prečo Agregácia ukazuje počet iba pre niektoré cesty?
Súčet, minimum a maximum majú zmysel len pre pole čísel. Keď pole obsahuje objekty — zoznam používateľov, napríklad — stále dostaneš počet, voliteľne zúžený podmienkou najprv.
Je môj JSON niekde nahraný?
Nie. Parsovanie, objavovanie cesty a filtrovanie sa všetko deje v tvojom prehliadači — tvoj dokument sa nikdy nepošle na server.