Uvod
JSON (JavaScript Object Notation) je široko rasprostranjen format za razmenu podataka koji se koristi u različitim veb aplikacijama i API-jima. Njegova jednostavnost čitanja i efikasnost u prenosu složenih struktura podataka čine ga popularnim izborom. Međutim, opcije za obradu JSON podataka direktno iz komandne linije su ograničene. Tu na scenu stupa jq, moćan alat komandne linije koji nudi obimnu kolekciju operatora za manipulaciju i transformaciju JSON struktura. U ovom vodiču ćemo istražiti kako koristiti jq za transformaciju JSON podataka, čineći naše komande prilagodljivijim i efikasnijim.
Operatori selekcije
Jedna od ključnih prednosti jq je njegov set operatora za selekciju, koji vam omogućavaju da precizno pretražujete i filtrirate JSON strukture.
Operator tačke (.)
Operator tačke koristi se za pristup vrednostima u okviru JSON objekata i elementima u nizovima. Može se upotrebiti za dobijanje specifičnih vrednosti ili kreiranje novih objekata.
jq
{ "ime": "Jovan", "prezime": "Petrović" }
Pristup polju „ime“
.ime
Kreiranje novog objekta sa poljima „ime“ i „puno_ime“
{ "ime": .ime, "puno_ime": .ime + " " + .prezime }
Operator uglastih zagrada ([])
Operator uglastih zagrada služi za pristup elementima niza. Broj u zagradama predstavlja indeks elementa u nizu, gde indeksiranje počinje od 0.
jq
["Jovan", "Petar", "Marija"]
Pristup prvom elementu niza
.[0]
Pristup elementu sa indeksom 2 (treći element)
.[2]
Operator uglastih zagrada sa filterima
Operator uglastih zagrada može se koristiti zajedno sa filterima kako bi se izdvojili određeni elementi iz niza. Filteri se navode unutar zagrada, a evaluacija se vrši s leva na desno.
jq
["Jovan", "Petar", "Marija"]
Izaberi elemente koji počinju sa „P“
.[] | select(.startswith("P"))
Operatori transformacije
Pored operatora selekcije, jq nudi i moćne operatore transformacije koji vam omogućavaju da menjate strukturu i sadržaj JSON podataka.
Operator cevi (|)
Operator cevi se koristi za prosleđivanje rezultata jednog operatora kao ulaza za drugi. Ovo olakšava sekvenciranje transformacija i pisanje kompleksnijih komandi.
jq
{ "ime": "Jovan", "prezime": "Petrović" }
Pretvori u mala slova i dodaj prefiks „Gospodin“
. | tolower | . + " Господин"
Operator filtera (select)
Operator filtera se koristi za filtriranje JSON podataka prema datom uslovu. Uslov se navodi unutar zagrada, a evaluacija se vrši s leva na desno.
jq
["Jovan", "Petar", "Marija"]
Izaberi imena koja su duža od 5 slova
.[] | select(.length > 5)
Operator smanjenja (reduce)
Operator smanjenja se koristi za primenu funkcije smanjenja na nizove ili objekte kako bi se dobila jedinstvena rezultujuća vrednost. Funkcija smanjenja se navodi unutar zagrada, a evaluacija se vrši s leva na desno.
jq
[1, 2, 3, 4, 5]
Saberi sve elemente niza
reduce .[] as $acc (0; $acc + .)
Primeri transformacije
Pretvaranje JSON teksta u CSV
jq
jq -r 'fromstream(1|truncate_stream(inputs)) | .[] | . | @csv' input.json > output.csv
Izdvajanje samo određenih polja
jq
jq -r '.[] | {ime, prezime}' input.json
Promena naziva polja
jq
jq -r 'fromstream(1|truncate_stream(inputs)) | .[] | {"novo_ime": .ime, "staro_ime": .prezime}' input.json
Grupisanje podataka po polju
jq
jq -r 'group_by(.tip) | {tip: .[0].tip, broj: length}' input.json
Zaključak
jq je izuzetno moćan i fleksibilan alat koji znatno unapređuje mogućnosti transformacije JSON podataka. Sa svojom bogatom paletom operatora za selekciju i transformaciju, jq vam omogućava da efikasno manipulišete kompleksnim JSON strukturama, prilagođavate komande i izdvajate korisne informacije iz podataka.
Često postavljana pitanja
Šta je jq?
jq je alat komandne linije dizajniran za obradu JSON podataka, nudeći moćne operatore za selekciju, transformaciju i filtriranje.
Koje su prednosti korišćenja jq?
jq omogućava jednostavnu i efikasnu transformaciju i manipulaciju JSON podataka, čineći komande prilagodljivijim i informativnijim.
Kako se instalira jq?
Proces instalacije jq zavisi od vašeg operativnog sistema. Detaljna uputstva možete pronaći na zvaničnoj veb stranici jq.
Koji su osnovni operatori jq?
Osnovni operatori jq uključuju operator tačke (.) za pristup poljima, operator uglastih zagrada ([]) za pristup elementima niza i operator cevi (|) za prosleđivanje rezultata.
Koji su najčešći slučajevi upotrebe jq?
jq se često koristi za izdvajanje i manipulaciju poljima JSON podataka, filtriranje podataka po određenim kriterijumima i pretvaranje JSON podataka u druge formate.
Gde mogu pronaći više informacija o jq?
Zvanična veb stranica jq nudi detaljnu dokumentaciju, uključujući uputstva za upotrebu, referentne materijale i primere.
Koje su alternative jq?
Alternative jq uključuju JMESPath, JSONPath, XPath i XSLT.
Kako mogu dobiti pomoć za korišćenje jq?
Za pomoć u korišćenju jq, možete se obratiti zvaničnoj dokumentaciji, pretraživati forume ili postavljati pitanja u zajednicama za razvoj softvera.