Ito ang command na jshon na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
jshon — JSON parser para sa shell
SINOPSIS
jshon -[P|S|Q|V|C|I|0] [-F path] -[t|l|k|u|p|a] -[s|n] value -[e|i|d] index
DESCRIPTION
jshon nag-parse, nagbabasa at gumagawa ng JSON. Ito ay dinisenyo upang maging magagamit hangga't maaari mula sa
sa loob ng shell at pinapalitan ang mga marupok na adhoc parser na ginawa mula sa grep/sed/awk pati na rin
heavyweight one-line parser na ginawa mula sa perl/python.
jshon naglo-load ng json text mula sa stdin, nagsasagawa ng mga aksyon, pagkatapos ay ipinapakita ang huling aksyon sa stdout.
Ang ilan sa mga opsyon na output json, ang iba ay naglalabas ng mga simpleng buod ng teksto. Dahil napaka Bash
mahihirap na nested datastructure, jshon hindi ibinabalik ang JSON bilang isang katutubong bagay bilang isang tipikal
gagawin ng library. sa halip jshon nagpapanatili ng kasaysayan ng mga pag-edit sa isang stack, at manipulahin mo ang
pinakamataas na elemento ng JSON.
MGA PAGKILOS
Ang bawat aksyon ay nasa anyo ng isang maikling opsyon. Ang ilan ay nangangailangan ng mga argumento. Habang maraming pagkakataon
of jshon maaaring i-pipe sa isa't isa, ang mga aksyon ay dapat na magkakadena nang sunud-sunod upang mabawasan
mga tawag. Ang lahat ng mga halimbawa ay gumagamit ng json sample na ito:
{"a":1,"b":[true,false,null,"str"],"c":{"d":4,"e":5}}
jshon [mga aksyon] < sample.json
Karamihan sa mga karaniwang read-only na paggamit ay mangangailangan lamang ng ilan -e mga aksyon at isa -a sa gitna ng
Kanila.
-t (uri) ay nagbabalik ng string, object, array, number, bool, null
jshon -t -> bagay
-l (haba) ay nagbabalik ng isang integer. Gumagana lamang sa string, object, array.
jshon -l -> 3
-k (keys) ay nagbabalik ng bagong linya na pinaghiwalay na listahan ng mga key. Gumagana lamang sa bagay.
jshon -k -> abc
-e index
(extract) ay nagbabalik ng halaga ng json sa "index". Gumagana lamang sa object, array. Ang index ng isang
Ang array ay isang integer.
jshon -ec -> {"d":4,"e":5}
-a (sa kabuuan) ay nagmamapa ng mga natitirang pagkilos sa napiling elemento. Gumagana lamang sa mga bagay
at mga arrays. Maramihan -a maaaring ma-nest ang mga tawag, kahit na bihira ang pangangailangan sa pagsasanay.
jshon -eb -a -t -> bool bool null string
-s halaga
(string) ay nagbabalik ng json na naka-encode na string. Maaaring (-i) ipasok sa isang umiiral na
istraktura.
jshon -s "back\slash" -> "back\\slash"
-n halaga
(nonstring/number) ay nagbabalik ng json element. Maaaring (-i) ipasok sa isang umiiral na
istraktura. Ang mga wastong halaga ay 'true', 'false', 'null', 'array', 'object', integers at
lumulutang. Ang mga pagdadaglat na t, f, n, [] at {} ay gumagana din ayon sa pagkakabanggit.
jshon -n object -> {}
-u (unstring) ay nagbabalik ng decoded string. Gumagana lamang sa mga simpleng uri: string, int, real,
boolean, null.
jshon -eb -e 3 -u -> str
-p (pop) nagpa-pop ang huling pagmamanipula mula sa stack, na nire-rewind ang kasaysayan. Mahusay gamitin sa
pagkuha ng maraming mga halaga mula sa isang bagay.
jshon -ec -ed -u -p -ee -u -> 4 5
-d index
(tanggalin) inaalis ang isang item sa isang array o object. Ibalot ang mga negatibong array index
sa paligid.
jshon -db -> {"a":1,"c":{"d":4,"e":5}}
-i index
(insert) ay kumplikado. Ito ay kabaligtaran ng katas. Ang Extract ay naglalagay ng json sub-element
sa salansan. Ang Insert ay nag-aalis ng isang sub-element mula sa stack, at naglalagay ng kaunting json na iyon
sa mas malaking array/object sa ilalim. Gumamit ng extract para sumisid sa json tree,
tanggalin/string/nonstring upang baguhin ang mga bagay, at ipasok upang itulak ang mga pagbabago pabalik sa
tree.
jshon -ea -ia -> ang orihinal na json
jshon -s one -ia -> {"a":"one", ...}
Ang mga array ay pinangangasiwaan sa isang espesyal na paraan. Ang pagpasa ng mga integer ay maglalagay ng value na wala
pag-overwrite. Ang mga negatibong integer ay katanggap-tanggap, gayundin ang string na 'idagdag'. Para i-overwrite
isang halaga sa isang array: tanggalin ang index, -n/s ang bagong halaga, at pagkatapos ay ipasok sa index.
jshon -eb -d 0 -sq -i 0 -> {"b":"q",false,null,"str"}
HINDI MANIPULASYON
Mayroong ilang mga meta-opsyon na hindi direktang nag-e-edit ng json. Tawagan ang mga ito nang hindi hihigit sa isang beses bawat
panawagan.
-F
(file) nagbabasa mula sa isang file sa halip na stdin. Ang tanging opsyon na hindi pagmamanipula upang kumuha ng isang
argumento.
-P (jsonp) ay tinanggal ang isang jsonp callback bago magpatuloy nang normal.
-S (sort) ay nagbabalik ng json na pinagsunod-sunod ayon sa susi, sa halip na ang orihinal na pag-order.
-Q (tahimik) hindi pinapagana ang pag-uulat ng error sa stderr, kaya hindi mo na kailangang iwiwisik ang "2> /dev/null"
sa kabuuan ng iyong script.
-V (by-value) ay nagbibigay-daan sa pass-by-value sa stack ng history ng pag-edit. Sa matinding kaso na may
libu-libong mga value na malalim ang nested na maaaring magresulta nito jshon tumatakbo ng ilang beses na mas mabagal
habang gumagamit ng ilang beses na mas maraming memorya. Gayunpaman, ang by-value ay mas ligtas kaysa sa by-reference at
sa pangkalahatan ay nagdudulot ng hindi gaanong sorpresa. Ang by-reference ay pinagana bilang default dahil wala
panganib sa panahon ng mga read-only na operasyon at sa pangkalahatan ay ginagawang mas maginhawa ang pag-edit ng json.
jshon -ec -n 7 -id -p -> c["d"] == 7
jshon -V -ec -n 7 -id -p -> c["d"] == 5
jshon -V -ec -n 7 -id -ic -> c["d"] == 7
may -V , ang mga pagbabago ay dapat na manu-manong ipasok pabalik sa stack sa halip na simple
lumalabas ang mga intermediate na halaga.
-C (magpatuloy) sa mga posibleng mababawi na error. Halimbawa, ang pagkuha ng mga value na hindi
exist ay magdaragdag ng 'null' sa edit stack sa halip na i-abort. Maaaring magbago ang ugali sa
hinaharap.
-I (in-place) na pag-edit ng file. Nangangailangan ng isang file upang baguhin at kaya gumagana lamang sa -F. Ito ay
nilalayong gumawa ng kaunting pagbabago sa isang json file. Kapag ginamit, ang normal na output ay pinipigilan
at ang ilalim ng stack ng pag-edit ay nakasulat.
-0 (null delimiters) Binabago ang delimiter ng -u mula sa isang bagong linya patungo sa isang null. Ang pagpipiliang ito
nakakaapekto lamang sa -u dahil iyon lang ang oras na maaaring lehitimong lumabas ang isang bagong linya sa
output.
--bersyon
Nagbabalik ng timestamp ng YYYYMMDD at lalabas.
OTHER TOOL
jshon palaging naglalabas ng isang field bawat linya. Maraming mga unix tool ang umaasa sa maraming tab na pinaghihiwalay
mga patlang bawat linya. Pipe ang output sa pamamagitan ng 'i-paste' upang ayusin ito. Gayunpaman, hindi maaaring i-paste
hawakan ang mga walang laman na linya kaya i-pad ang mga may placeholder. Narito ang isang halimbawa:
jshon ... | sed 's/^$/-/' | i-paste -s -d '\t\t\n'
Pinapalitan nito ang mga blangko ng '-' at pinagsasama ang bawat tatlong linya sa isa.
Parami nang parami ang mga tool na gumagawa ng json output. Kadalasan ang mga ito ay gumagamit ng line-oriented
json/plaintext hybrid kung saan ang bawat linya ay isang independiyenteng istruktura ng json. Nakalulungkot ang ibig sabihin nito
ang output sa kabuuan ay hindi lehitimong json. Alinman sa loop kahit na ang data linya sa pamamagitan ng linya
(tumatawag jshon isang beses para sa bawat linya) o i-convert ito sa isang lehitimong json array. Halimbawa:
habang binabasa ang linya; gawin jshon <<<< "$line"; tapos na <<(journalctl -o json)
journalctl -o json | sed -e '1i[' -e '$!s/$/,/' -e '$a]' | jshon
Maglaro ng golp
Kung nagmamalasakit ka sa napakaikli ng isang liner, maaaring paikliin ang mga argumento kapag hindi
magdulot ng kalabuan. Ang halimbawa mula sa -p(op) maaaring maglaro ng golf tulad ng sumusunod:
jshon -ec -ed -u -p -ee -u == jshon -ec -ed -upee -u
Hindi ko inirerekumenda ang paggawa nito (nagagawa nitong mas mahirap maunawaan ang mga bagay) ngunit ang ilang mga tao
golf sa kabila ng mga kahihinatnan.
PAGLIKHA JSON
jshon ay maaaring lumikha ng json sa pamamagitan ng pagpasa ng isang walang laman na bagay bilang input:
jshon -s one -ia <<< "{}"
MGA AUTHORS
jshon ay isinulat ni Kyle Keen[protektado ng email]> na may mga patch mula kay Dave Reisner
<[protektado ng email]>, AndrewF (BSD, OSX, jsonp, pag-uuri), at Jean-Marc A (solaris).
Gamitin ang jshon online gamit ang mga serbisyo ng onworks.net