Tipy & triky · Aplikace · Všude · ~10 min týdně · 2 min čtení
jq: čitelný JSON v terminálu a vytažení hodnoty jedním výrazem
Naposledy ověřeno:

JSON je všude — odpovědi API, konfigurační soubory, logy — a skoro vždycky přijde jako nečitelná jednořádková kaše. Kdo ji chce přečíst, kopíruje ji do online formátovačů (a posílá tak data kdoví kam) nebo ji loví očima. Nástroj jq tohle řeší přímo v terminálu: JSON zformátuje, odsadí a obarví jediným příkazem. A to je jen začátek — jq je zároveň dotazovací jazyk, kterým z JSONu vytáhnete konkrétní hodnotu, seznam polí nebo přefiltrovanou podmnožinu, bez psaní skriptu.
Jak na to
- Nainstalujte jq: ve Windows
winget install jqlang.jq, na Macubrew install jq, na Linuxu bývá v systémových balíčcích (apt install jq). - Základ — zformátovat:
jq . soubor.jsonvypíše soubor odsazený a obarvený. Tečka znamená „celý vstup beze změny“. Nejčastěji se jq lepí rovnou za curl:curl -s https://api.example.com/users | jq . - Vytažení hodnoty:
jq '.name'vrátí polename,jq '.address.city'zanořenou hodnotu,jq '.[0]'první prvek pole. - Průchod polem:
jq '.items[].name'vypíše názvy všech položek v poliitems. Kombinace s výběrem více polí:jq '.items[] | {name, price}'udělá z každé položky malý objekt jen s těmito dvěma poli. - Když si výraz nejste jistí, stavte ho postupně — začněte tečkou a přidávejte po kousku. A složitější dotaz („vyber položky dražší než sto a seřaď podle názvu“) vám dnes spolehlivě navrhne AI, podobně jako v tipu regex bez učení — jq výraz do promptu, ukázka dat k tomu.
Vzorová situace
Vývojářka ladí integraci s API dopravce. Odpověď má osm kilobajtů na jednom řádku a ji zajímá jediné: stav zásilky a čas poslední změny. Místo kopírování do prohlížeče napíše curl -s ... | jq '.shipment | {status, updated_at}' a vidí přesně ty dvě hodnoty, čitelně. Když potřebuje totéž pro padesát zásilek, jen upraví výraz na průchod polem — a má tabulku, kterou by jinak vyráběla skriptem půl hodiny. Citlivá data přitom neopustila její počítač, což u online formátovačů nikdy jisté není.
Kdo jq zrovna nemá po ruce, aspoň na zformátování poslouží vestavěná náhrada: python3 -m json.tool soubor.json odsadí JSON bez jakékoli instalace. Dotazovat se ale neumí — na vytahování hodnot je jq nenahraditelný.
Co vám to přinese
Čtení JSONu přestane bolet: formátování je otázka jednoho příkazu a konkrétní hodnotu vylovíte výrazem místo očí. Odpadne kopírování pracovních dat do webových nástrojů. A protože se jq skládá s curl a dalšími příkazy do rour, stane se z něj stavební kámen jednorázových analýz i skriptů, které by jinak vyžadovaly Python.
Chcete jít do hloubky? V příručce najdete kapitolu Klíčové kategorie aplikací.
Podobné tipy
Todoist filtry: vlastní pohled „důležité dnes“
Dotaz (p1 | p2) & due:today ukáže jen to, na čem dnes opravdu záleží. Zbytek nevidíte — a to je záměr.
Todoist: priorita a termín přímo v textu úkolu
Q
Napište „p1“ a úkol je rudý, „zítra 9:00“ a má termín. Rychlé přidání rozumí všemu v jednom řádku.
Todoist: úkol zadáte jednou větou
„každé pondělí v 10 #porady p1“ — datum, opakování, projekt i prioritu Todoist pochopí z textu.
Pomohlo vám to?
Líbil se vám tip?
Každý týden posílám jeden takový do e-mailu. Dvě minuty čtení, hodiny úspor.
1 tip týdně · žádný spam · odhlášení jedním klikem