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
Napište „cmd“ do adresního řádku Průzkumníka
Terminál otevřený přesně ve složce, na kterou se díváte: stačí do adresního řádku Průzkumníka napsat cmd nebo powershell a stisknout Enter.
Windows: cesta k souboru (Ctrl+Shift+C)
Ctrl+Shift+C
Ctrl+Shift+C v Průzkumníku Windows zkopíruje celou cestu k souboru i s názvem. Popisujeme i kopírování cest k více souborům a starší postup.
python -m http.server: nasdílejte složku do sítě jedním příkazem
Potřebujete dostat soubory do druhého zařízení na stejné síti? Python udělá z libovolné složky webovou stránku ke stažení.
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.
E-book Top 30 tipů zdarma — pošlu vám ho hned.
Pak 1 tip týdně · žádný spam · odhlášení jedním klikem
Radši systém než jednotlivé tipy? E-mailový kurz zdarma — sedm dní, sedm e-mailů, každý den jedna dovednost.