Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 jshon 명령입니다.
프로그램:
이름
쟌 — 쉘용 JSON 파서
개요
쟌 -[P|S|Q|V|C|I|0] [-F 경로] -[t|l|k|u|p|a] -[s|n] 값 -[e|i|d] 색인
기술
쟌 JSON을 구문 분석하고 읽고 생성합니다. 에서 최대한 사용할 수 있도록 설계되었습니다.
쉘 내에서 grep/sed/awk로 만든 깨지기 쉬운 임시 파서를 대체합니다.
perl/python으로 만든 강력한 한 줄 파서.
쟌 stdin에서 json 텍스트를 로드하고 작업을 수행한 다음 stdout에 마지막 작업을 표시합니다.
일부 옵션은 json을 출력하고 다른 옵션은 일반 텍스트 요약을 출력합니다. Bash는 매우
열악한 중첩 데이터 구조, 쟌 JSON을 일반적인 기본 개체로 반환하지 않습니다.
도서관은 것입니다. 대신에 쟌 스택의 편집 내역을 유지하고
최상위 JSON 요소.
ACTIONS
각 작업은 짧은 옵션의 형태를 취합니다. 일부는 인수가 필요합니다. 많은 경우에
of 쟌 서로 연결될 수 있으므로 작업을 순차적으로 연결하여 작업을 줄여야 합니다.
전화. 모든 예제는 다음 json 샘플을 사용합니다.
{"a":1,"b":[참,거짓,null,"str"],"c":{"d":4,"e":5}}
jshon [작업] < 샘플.json
가장 일반적인 읽기 전용 용도는 여러 개만 필요합니다. -e 행동과 하나 -a 의 중간에서
그들.
-t (유형)은 문자열, 객체, 배열, 숫자, bool, null을 반환합니다.
jshon -t -> 객체
-l (길이)는 정수를 반환합니다. 문자열, 객체, 배열에서만 작동합니다.
jshon -l -> 3
-k (keys) 줄 바꿈으로 구분된 키 목록을 반환합니다. 객체에서만 작동합니다.
jshon -k -> abc
-e 색인
(추출) "인덱스"에서 json 값을 반환합니다. 객체, 배열에서만 작동합니다. 인덱스
배열은 정수입니다.
jshon -ec -> {"d":4,"e":5}
-a (across)는 선택한 요소 전체에 걸쳐 나머지 작업을 매핑합니다. 개체에만 작동
그리고 배열. 다수의 -a 실제로는 거의 필요하지 않지만 호출을 중첩할 수 있습니다.
jshon -eb -a -t -> bool bool null 문자열
-s 가치
(문자열)은 json으로 인코딩된 문자열을 반환합니다. 나중에 기존에 (-i)삽입될 수 있습니다.
구조.
jshon -s "백\슬래시" -> "백\슬래시"
-n 가치
(비문자열/숫자)는 json 요소를 반환합니다. 나중에 기존에 (-i)삽입될 수 있습니다.
구조. 유효한 값은 'true', 'false', 'null', 'array', 'object', 정수 및
수레. 약어 t, f, n, [] 및 {}도 각각 작동합니다.
jshon -n 객체 -> {}
-u (unstring)은 디코딩된 문자열을 반환합니다. 단순 유형(string, int, real,
부울, null.
jshon -eb -e 3 -u -> str
-p (팝) 스택에서 마지막 조작을 팝하여 히스토리를 되감습니다. 에 유용한
하나의 개체에서 여러 값을 추출합니다.
jshon -ec -ed -u -p -ee -u -> 4 5
-d 색인
(삭제) 배열 또는 객체에서 항목을 제거합니다. 음수 배열 인덱스가 래핑됩니다.
약.
jshon -db -> {"a":1,"c":{"d":4,"e":5}}
-i 색인
(삽입) 복잡합니다. 추출의 반대입니다. 추출은 json 하위 요소를 넣습니다.
스택에. 삽입은 스택에서 하위 요소를 제거하고 json의 해당 비트를 삽입합니다.
아래에 있는 더 큰 배열/객체에 넣습니다. 추출을 사용하여 json 트리를 살펴보세요.
delete/string/nonstring을 사용하여 변경하고 insert를 사용하여 변경 사항을 다시
나무.
jshon -ea -ia -> 원래 json
jshon -s 하나 -ia -> {"a":"하나", ...}
배열은 특별한 방식으로 처리됩니다. 정수를 전달하면 없이 값이 삽입됩니다.
덮어쓰기. 문자열 'append'와 마찬가지로 음의 정수도 허용됩니다. 덮어쓰려면
배열의 값: 인덱스 삭제, -n/s 새 값을 지정한 다음 인덱스에 삽입합니다.
jshon -eb -d 0 -sq -i 0 -> {"b":"q",false,null,"str"}
비조작
json을 직접 편집하지 않는 몇 가지 메타 옵션이 있습니다. 당 최대 한 번 호출
기도.
-F
(file) stdin 대신 파일에서 읽습니다. 조작하지 않는 유일한 옵션
논의.
-P (jsonp)는 정상적으로 계속하기 전에 jsonp 콜백을 제거합니다.
-S (정렬)은 원래 순서 대신 키별로 정렬된 json을 반환합니다.
-Q (quiet) stderr에 대한 오류 보고를 비활성화하므로 "2> /dev/null"을 뿌릴 필요가 없습니다.
스크립트 전체에서.
-V (값 기준) 편집 내역 스택에서 값 기준 전달을 활성화합니다. 극단적인 경우
수천 개의 깊이 내포된 값으로 인해 쟌 몇 배 더 느리게 실행
몇 배 더 많은 메모리를 사용하면서. 그러나 by-value는 by-reference보다 안전하며
일반적으로 놀라움을 덜 유발합니다. By-reference는 기본적으로 활성화되어 있습니다.
읽기 전용 작업 중 위험하며 일반적으로 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
와 -V , 변경 사항은 단순히 스택이 아닌 스택을 통해 다시 수동으로 삽입해야 합니다.
중간 값을 팝핑합니다.
-C (계속) 잠재적으로 복구 가능한 오류에 대해. 예를 들어, 그렇지 않은 값 추출
존재하면 중단하는 대신 편집 스택에 'null'을 추가합니다. 행동은 다음과 같이 변경될 수 있습니다.
미래.
-I (제자리에서) 파일 편집. 수정할 파일이 필요하므로 -F에서만 작동합니다. 이것은
json 파일을 약간 변경하기 위한 것입니다. 사용시 정상 출력 억제
편집 스택의 맨 아래가 기록됩니다.
-0 (null 구분 기호) -u의 구분 기호를 개행에서 null로 변경합니다. 이 옵션
줄 바꿈이 합법적으로 나타날 수 있는 유일한 시간이기 때문에 -u에만 영향을 미칩니다.
출력.
--번역
YYYYMMDD 타임스탬프를 반환하고 종료합니다.
기타 도구
쟌 항상 한 줄에 하나의 필드를 출력합니다. 많은 유닉스 도구는 분리된 여러 탭을 기대합니다.
줄당 필드. 이 문제를 해결하려면 '붙여넣기'를 통해 출력을 파이프하십시오. 단, 붙여넣기 불가
빈 줄을 처리하므로 자리 표시자로 채웁니다. 다음은 예입니다.
jshon... | 세드 's/^$/-/' | 붙여넣기 -s -d '\t\t\n'
공백을 '-'로 바꾸고 세 줄마다 하나로 병합합니다.
json 출력을 생성하는 도구가 점점 더 많아지고 있습니다. 종종 이들은 라인 지향을 사용합니다.
json/plaintext hybrid 여기서 각 행은 독립적인 json 구조입니다. 슬프게도 이것은 의미합니다
전체 출력은 합법적인 json이 아닙니다. 데이터를 한 줄씩 반복합니다.
(부름 쟌 한 줄에 한 번) 또는 합법적인 json 배열로 변환합니다. 예를 들어:
줄을 읽는 동안; do jshon <<< "$line"; 완료 < <(journalctl -o json)
journalctl -o json | sed -e '1i[' -e '$!s/$/,/' -e '$a]' | jshon
GOLF
매우 짧은 한 줄에 관심이 있는 경우 그렇지 않은 경우 인수가 압축될 수 있습니다.
모호함을 유발합니다. 의 예 -팝) 다음과 같이 골프를 칠 수 있습니다.
jshon -ec -ed -u -p -ee -u == jshon -ec -ed -upee -u
나는 이것을 권장하지 않지만 (이해하기가 훨씬 더 어렵습니다) 일부 사람들은
결과에도 불구하고 골프.
만들기 JSON
쟌 빈 개체를 입력으로 전달하여 json을 만들 수 있습니다.
jshon -s one -ia <<< "{}"
작가
쟌 Kyle Keen이 작성했습니다.[이메일 보호]> Dave Reisner의 패치 포함
<[이메일 보호]>, AndrewF(BSD, OSX, jsonp, 정렬) 및 Jean-Marc A(solaris).
onworks.net 서비스를 사용하여 jshon 온라인 사용