Jest to polecenie jshon, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z wielu naszych bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS
PROGRAM:
IMIĘ
jshon — Parser JSON dla powłoki
STRESZCZENIE
jshon -[P|S|Q|V|C|I|0] [-F ścieżka] -[t|l|k|u|p|a] -[s|n] wartość -[e|i|d] indeks
OPIS
jshon analizuje, odczytuje i tworzy JSON. Został zaprojektowany tak, aby był jak najbardziej użyteczny
w powłoce i zastępuje delikatne parsery adhoc utworzone z grep/sed/awk, a także
ciężkie parsery jednowierszowe wykonane z perla/pythona.
jshon ładuje tekst json ze stdin, wykonuje akcje, a następnie wyświetla ostatnią akcję na stdout.
Niektóre opcje wyświetlają json, inne wyświetlają podsumowania w postaci zwykłego tekstu. Ponieważ Bash ma bardzo
słabo zagnieżdżone struktury danych, jshon nie zwraca JSON jako obiektu natywnego jako typowego
biblioteka by. Zamiast jshon zachowuje historię zmian w stosie, a ty manipulujesz plikami
najwyższy element JSON.
DZIAŁANIA
Każda akcja ma formę krótkiej opcji. Niektóre wymagają argumentów. Podczas gdy wiele przypadków
of jshon mogą być potokowane przez siebie, działania powinny być łączone sekwencyjnie, aby zredukować
połączenia. Wszystkie przykłady wykorzystują tę próbkę json:
{"a":1,"b":[prawda,fałsz,null,"str"],"c":{"d":4,"e":5}}
jshon [działania] < próbka.json
Większość typowych zastosowań tylko do odczytu będzie wymagać tylko kilku -e akcje i jeden -a w środku
Im.
-t (typ) zwraca ciąg znaków, obiekt, tablicę, liczbę, wartość logiczną, wartość null
jshon -t -> obiekt
-l (długość) zwraca liczbę całkowitą. Działa tylko na łańcuchach, obiektach i tablicach.
jszon -l -> 3
-k (klucze) zwraca listę kluczy oddzielonych znakami nowej linii. Działa tylko na obiekcie.
jshon -k -> abc
-e wskaźnik
(extract) zwraca wartość json w „index”. Działa tylko na obiekcie, tablicy. Indeks an
tablica jest liczbą całkowitą.
jshon -ec -> {"d":4,"e":5}
-a (w poprzek) odwzorowuje pozostałe działania na wybrany element. Działa tylko na obiekty
i tablice. Wiele -a wywołania mogą być zagnieżdżane, chociaż w praktyce potrzeba jest rzadka.
jshon -eb -a -t -> bool bool łańcuch pusty
-s wartość
(string) zwraca ciąg zakodowany w formacie json. Można później (-i) wstawić do istniejącego
Struktura.
jshon -s "wstecz\\ukośnik" -> "wstecz\\ukośnik"
-n wartość
(nonstring/number) zwraca element json. Można później (-i) wstawić do istniejącego
Struktura. Prawidłowe wartości to „true”, „false”, „null”, „array”, „object”, liczby całkowite i
pływa. Skróty odpowiednio t, f, n, [] i {} również działają.
jshon -n obiekt -> {}
-u (unstring) zwraca zdekodowany ciąg znaków. Działa tylko na prostych typach: string, int, real,
wartość logiczna, zerowa.
jshon -eb -e 3 -u -> ul
-p (pop) usuwa ostatnią manipulację ze stosu, przewijając historię. Użyteczny do
wyodrębnianie wielu wartości z jednego obiektu.
jshon -ec -ed -u -p -ee -u -> 4 5
-d wskaźnik
(delete) usuwa element z tablicy lub obiektu. Ujemne indeksy tablicy zostaną zawinięte
na około.
jshon -db -> {"a":1,"c":{"d":4,"e":5}}
-i wskaźnik
(wstaw) jest skomplikowana. Jest to odwrotność ekstraktu. Wyodrębnij umieszcza element podrzędny json
na stosie. Insert usuwa element podrzędny ze stosu i wstawia ten bit json
do większej tablicy/obiektu poniżej. Użyj ekstraktu, aby zanurkować w drzewie json,
delete/string/nonstring, aby zmienić rzeczy i wstawić, aby wepchnąć zmiany z powrotem do pliku
drzewo.
jshon -ea -ia -> oryginalny json
jshon -s jeden -ia -> {"a":"jeden", ...}
Tablice są obsługiwane w specjalny sposób. Przekazywanie liczb całkowitych wstawi wartość bez
nadpisywanie. Dopuszczalne są ujemne liczby całkowite, podobnie jak ciąg „append”. Aby nadpisać
wartość w tablicy: usuń indeks, -nie nową wartość, a następnie wstaw w miejscu indeksu.
jshon -eb -d 0 -sq -i 0 -> {"b":"q",fałsz,null,"str"}
NIEMANIPULACJA
Istnieje kilka meta-opcji, które nie edytują bezpośrednio pliku json. Zadzwoń do nich najwyżej raz na
wezwanie.
-F
(plik) odczytuje z pliku zamiast ze standardowego wejścia. Jedyna opcja bez manipulacji, aby wziąć
argumenty.
-P (jsonp) usuwa wywołanie zwrotne jsonp przed normalnym kontynuowaniem.
-S (sort) zwraca json posortowane według klucza, zamiast pierwotnej kolejności.
-Q (quiet) wyłącza raportowanie błędów na stderr, więc nie musisz posypywać „2> /dev/null”
w całym skrypcie.
-V (według wartości) umożliwia przekazywanie wartości na stosie historii edycji. W skrajnych przypadkach z
tysiące głęboko zagnieżdżonych wartości, które może to spowodować jshon działa kilka razy wolniej
zużywając kilkakrotnie więcej pamięci. Jednak według wartości jest bezpieczniejsze niż przez odwołanie i
generalnie powoduje mniejsze zaskoczenie. Przez odniesienie jest domyślnie włączone, ponieważ nie ma
ryzyko podczas operacji tylko do odczytu i ogólnie sprawia, że edycja json jest wygodniejsza.
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
Z -V , zmiany należy ręcznie wstawić z powrotem przez stos zamiast po prostu
wyskakując z wartości pośrednich.
-C (kontynuuj) na temat potencjalnie możliwych do naprawienia błędów. Na przykład wyodrębnianie wartości, które tego nie robią
istnieć doda „null” do stosu edycji zamiast przerwania. Zachowanie może ulec zmianie w
przyszłość.
-I (w miejscu) edycja plików. Wymaga pliku do modyfikacji, więc działa tylko z opcją -F. To jest
przeznaczony do wprowadzania niewielkich zmian w pliku json. Gdy jest używany, normalne wyjście jest tłumione
a dolna część stosu edycji jest zapisywana.
-0 (puste ograniczniki) Zmienia ogranicznik -u z nowej linii na zero. Ta opcja
wpływa tylko na -u, ponieważ jest to jedyny przypadek, w którym znak nowej linii może legalnie pojawić się w pliku
wyjście.
--wersja
Zwraca znacznik czasu RRRRMMDD i kończy działanie.
INNE TOOLS
jshon zawsze wyprowadza jedno pole na linię. Wiele narzędzi uniksowych wymaga oddzielenia wielu tabulatorów
pola na linię. Przeprowadź wyjście przez „wklej”, aby to naprawić. Jednak wklej nie może
obsługuj puste wiersze, więc wypełnij je symbolem zastępczym. Oto przykład:
jszon ... | sed 's/^$/-/' | wklej -s -d '\t\t\n'
Spowoduje to zastąpienie spacji znakiem „-” i połączenie co trzech linii w jedną.
Istnieje coraz więcej narzędzi, które generują dane wyjściowe json. Często używają one zorientowanych liniowo
Hybryda json/zwykły tekst, w której każda linia jest niezależną strukturą json. Niestety to oznacza
dane wyjściowe jako całość nie są zgodne z prawem json. Albo pętla przez linię danych linia po linii
(powołanie jshon raz dla każdej linii) lub przekonwertuj go na legalną tablicę json. Na przykład:
podczas czytania linii; do jshon <<< "$linii"; gotowe < <(journalctl -o json)
dziennikctl -o json | sed -e '1i[' -e '$!s/$/,/' -e '$a]' | jshon
GOLF
Jeśli zależy Ci na wyjątkowo krótkich jednolinijkach, argumenty można skondensować, gdy tak nie jest
powodować niejasności. Przykład z -Muzyka pop) można grać w golfa w następujący sposób:
jshon -ec -ed -u -p -ee -u == jshon -ec -ed -upee -u
Nie polecam tego robić (to znacznie utrudnia zrozumienie), ale niektórzy ludzie
golf pomimo konsekwencji.
TWORZENIE JSON
jshon może utworzyć json, przekazując pusty obiekt jako dane wejściowe:
jshon -s jeden -ia <<< "{}"
AUTORSKI
jshon został napisany przez Kyle'a Keena[email chroniony]> z łatami od Dave'a Reisnera
<[email chroniony]>, AndrewF (BSD, OSX, jsonp, sortowanie) i Jean-Marc A (solaris).
Korzystaj z jshon online, korzystając z usług onworks.net