jq je lehký a flexibilní procesor JSON příkazového řádku podobný sed v tom, že vám umožňuje dělit, filtrovat, mapovat a transformovat data z jednoho formátu do druhého. Lze jej například použít k převodu dat JSON do CSV (hodnoty oddělené čárkami) pro načtení do databáze MySQL bez sloupců JSON. Můžete si jej stáhnout z https://stedolan.github.io/jq/ a pro experimentování je k dispozici online verze na https://jqplay.org/. Navíc jq používá analyzátor Perl Compatible Regular Expressions (PCRE), stejně jako mnoho jiných jazyků. (Tento úžasný nástroj si zaslouží, aby o něm bylo napsáno mnohem více než o jednoduchých příkladech zde, a přečtení manuálu je rychlý způsob, jak se seznámit s mnoha funkcemi tohoto nástroje.)
Pokud narazíte na níže uvedenou chybu:
jq: command not found (JSON CLI Parser)
Můžete zkusit nainstalovat níže uvedený balíček podle vaší volby distribuce.
Distribuce | Příkaz |
---|---|
OS X | brew install jq |
Debian | apt-get install jq |
Ubuntu | apt-get install jq |
Alpine | apk přidat jq |
Arch Linux | pacman -S jq |
Kali Linux | apt-get install jq |
Fedora | instalace dnf jq |
Raspbian | apt-get install jq |
Docker | docker spusťte cmd.cat/jq jq |
Bez argumentů pro jq „pěkně vytiskne“ dokument JSON. To je velmi užitečné pro extrémně složité dokumenty s mnoha vrstvami vložených objektů a polí, které je obtížné zobrazit na jedné rovné lince.
Vyberte určitá pole
V některých případech nebudou všechna data v dokumentu JSON zajímavá a můžete použít jq k reformě dat a poskytnout pouze vybrané části. Například:
$ jq '{city, state, id}' myfile.json
Příklady příkazů jq
1. Výstup souboru JSON ve formátu hezkého tisku:
$ jq . file.json
2. Výstup všech prvků z polí (nebo všech párů klíč–hodnota z objektů) do souboru JSON:
$ jq .[] file.json
3. Načtěte objekty JSON ze souboru do pole a vytiskněte jej (inverze k `jq .[]`):
$ jq --slurp . file.json
4. Výstup prvního prvku do souboru JSON:
$ jq .[0] file.json
5. Výstup hodnoty daného klíče prvního prvku v textu JSON z stdin:
$ cat file.json | jq .[0].key_name
6. Výstup hodnoty daného klíče každého prvku v textu JSON ze stdin:
$ cat file.json | jq 'map(.key_name)'
Shrnutí
jq je procesor JSON příkazového řádku. Funguje to jako sed pro data JSON; můžete jej použít k filtrování, analýze a transformaci strukturovaných dat se stejnou lehkostí, jakou vám umožňují sed, awk nebo grep s nezpracovaným textem. Jq je k dispozici na GitHubu na https://stedolan.github.io/jq/. Instalace je velmi jednoduchá; je to jen jeden binární soubor dostupný pro Windows, macOS a Linux. Stačí si jej stáhnout a zkopírovat do složky dostupné na vašem systémovém PATH, abyste jej mohli spouštět z shellu nebo příkazového řádku.