Како трансформисати JSON податке са jq

Како трансформисати JSON податке са jq

Увод

JSON (JavaScript Object Notation) је популаран формат за размену података који се користи у бројним веб апликацијама и АПИ-јима. Он је лако читљив за људе и омогућава ефикасну трансмисију сложених структура података. Међутим, могућности за трансформацију JSON података унутар команде су ограничене. Овде долази jq, моћни командни алат који пружа богат скуп оператора за манипулацију и трансформацију JSON података. У овом упутству, истражићемо како да користимо jq за трансформацију JSON података и учинимо наше команде више прилагођеним и ефикасним.

Оператори селекције

Једна од најважнијих карактеристика jq је његов скуп оператора селекције који вам омогућавају да претражујете и филтрирате JSON структуре.

Оператор тачке (.)

Оператор тачке се користи за приступ пољима у JSON објектима и елементима у низовима. Може се користити за добијање одређених вредности или за креирање нових објеката.

jq
{ "име": "Јован", "презиме": "Петровић" }

Приступ пољу "име"

.име

Креирање новог објекта са пољима "име" и "цео_назив"

{ "име": .име, "цео_назив": .име + " " + .презиме }

Оператор загладних заграда ([])

Оператор загладних заграда се користи за приступ елементима низова. Број унутар заграда представља индекс елемента у низу, при чему индексирање почиње од 0.

jq
["Јован", "Петар", "Марија"]

Приступ првом елементу низа

.[0]

Приступ елементу са индексом 2 (трећи елемент)

.[2]

Оператор загладних заграда са филтерима

Оператор загладних заграда се може користити заједно са филтерима за избор одређених елемената из низа. Филтери се пишу унутар заграда, а евалуација се врши од лева на десно.

jq
["Јован", "Петар", "Марија"]

Изабери елементе који почињу са "П"

.[] | select(. startswith("П"))

Оператори трансформације

Поред оператора селекције, jq пружа и моћне операторе трансформације који вам омогућавају да мењате структуру и садржај JSON података.

Оператор цеви (|)

Оператор цеви се користи за преусмеравање излаза једног оператора као улаза за други. Ово омогућава лако секвенцирање трансформација и писање сложених команди.

jq
{ "име": "Јован", "презиме": "Петровић" }

Претвори у мала слова и додај префикс "Господин"

. | to_lower | . + " Господин"

Оператор филтера (select)

Оператор филтера се користи за филтрирање JSON података према задатом критеријуму. Критеријум се пише унутар заграда и евалуација се врши од лева на десно.

jq
["Јован", "Петар", "Марија"]

Изабери имена која су дужа од 5 слова

.[] | select(.length > 5)

Оператор смањења (reduce)

Оператор смањења се користи за примењивање функције смањења на низове или објекте како би се произвела једна резултатна вредност. Функција смањења се пише унутар заграда и евалуација се врши од лева на десно.

jq
[1, 2, 3, 4, 5]

Сабери све елементе низа

reduce . as $acc; $acc + .

Примери трансформације

Конвертовање JSON текста у CSV

jq
jq -r 'fromstream(1|truncate_stream(inputs)) | .[] | . | tostring' input.json > output.csv

Издвајање само одређених поља

jq
jq -r '.[] | .{име, презиме}' input.json

Промена имена поља

jq
jq -r 'fromstream(1|truncate_stream(inputs)) | .[] | { "ново_име": .име, "старо_име": .презиме }' input.json

Груписање података по пољу

jq
jq -r 'group_by(.тип) | {"тип": .[0].тип, "број": length}' input.json

Закључак

jq је моћан и флексибилан алат који значајно побољшава могућности за трансформацију JSON података. Са својим богатим скупом оператора за селекцију и трансформацију, jq вам омогућава да манипулишете комплексним JSON структурама, прилагођавате команде и ефикасно извлачите вредне информације из података.

Често постављана питања

Шта је jq?
jq је командни алат за обраду JSON података који пружа моћне операторе за селекцију, трансформацију и филтрирање.

Које су предности коришћења jq?
jq омогућава лаку и ефикасну трансформацију и манипулацију JSON података, чинећи команде прилагодљивијим и информативнијим.

Како се инсталира jq?
Инсталација jq се разликује у зависности од вашег оперативног система. Упутства за инсталацију можете пронаћи на званичној веб страници jq.

Који су неки од основних оператора jq?
Основни оператори jq укључују оператор тачке (.) за приступ пољима, оператор загладних заграда ([]) за приступ елементима низа и оператор цеви (|) за преусмеравање излаза.

Који су неки од најчешћих случајева употребе jq?
jq се често користи за издвајање и манипулацију пољима JSON података, филтрирање података по одређеним критеријумима и претварање JSON података у различите формате.

Где могу пронаћи више информација о jq?
Званична веб страница jq пружа детаљну документацију, укључујући упутства за употребу, референтне материјале и примере.

Које су неке од алтернатива jq?
Алтернативе jq укључују JMESPath, JSONPath, XPath и XSLT.

Како могу добити помоћ за коришћење jq?
За помоћ у коришћењу jq, можете се обратити званичној документацији, претраживати форуме или поставити питања у заједницама за развој софтвера.