Unix 명령줄 JSON 파서?
파이프라인에서 JSON 응답의 값을 조사하기 위해 사용할 수 있는 Unix(맛 선택) JSON 파서를 추천할 수 있습니까?
는 는는더 prefer prefer ipython -m json.tool대부분의 *nix 운영체제에서는 디폴트별로 사용할 수 있습니다.
$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
"bar": 2,
"foo": 1
}
주의: 사용하시는 python 버전에 따라 모든 키가 알파벳 순으로 정렬될 수 있습니다.이것은 좋은 일이거나 좋은 일이 아닙니다.python 2에서는 키를 정렬하는 것이 기본이었지만 python 3.5+에서는 자동으로 정렬되지 않지만 키별로 명시적으로 정렬할 수 있는 옵션이 있습니다.
$ echo '{"foo":1, "bar":2}' | python3 -m json.tool --sort-keys
{
"bar": 2,
"foo": 1
}
휴대용 C 컴파일 도구를 찾는 경우:
https://stedolan.github.io/jq/
웹 사이트:
jq는 JSON 데이터용 sed와 비슷합니다. sed, awk, grep 및 친구들이 텍스트를 가지고 놀 수 있는 것처럼 쉽게 구조화된 데이터를 슬라이스, 필터링, 매핑 및 변환할 수 있습니다.
jq는 당신이 가지고 있는 데이터 포맷을 아주 적은 노력으로 원하는 포맷으로 만들 수 있으며, 그렇게 하기 위한 프로그램은 종종 당신이 예상했던 것보다 짧고 단순합니다.
튜토리얼: https://stedolan.github.io/jq/tutorial/
매뉴얼: https://stedolan.github.io/jq/manual/
다운로드: https://stedolan.github.io/jq/download/
명령줄 JSON 조작용으로 특별히 설계된 모듈을 만들었습니다.
https://github.com/ddopson/underscore-cli
- 플렉시블 - JSON 데이터 처리를 위한 "swiss-army-knife" 툴은 간단한 프리 프린터 또는 풀 파워 Javascript 명령줄로 사용할 수 있습니다.
- 파워풀 - underscore.js(및 underscore.string)의 모든 파워와 기능을 제공합니다.
- SIMPLE - "perl -pe"를 사용하는 것과 유사하게 JS 한 줄 쓰기를 단순화합니다.
- 연쇄 - 여러 명령 호출을 연쇄하여 데이터 처리 파이프라인을 만들 수 있습니다.
- MULTI-FORMAT - 입력/출력 포맷을 풍부하게 지원 - 예쁜 인쇄, 엄격한 JSON 등 [곧 출시 예정]
- 문서 - 각 명령어에 대한 여러 예를 포함한 뛰어난 명령줄 문서
강력한 작업을 매우 쉽게 수행할 수 있습니다.
cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
# 'New town, Edinburgh, Scotland [4320 x 3240]',
# 'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
# 'Kariega Game Reserve, South Africa [3584x2688]',
# 'Valle de la Luna, Chile [OS] [1024x683]',
# 'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]
cat earthporn.json | underscore select '.data .title' | underscore count
# 25
underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]
underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]
echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar
underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]
underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]
underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10
또한 최고의 "스마트 스페이스" JSON 포메터를 갖추고 있습니다.

기능 요구가 있는 경우는, 이 투고에 코멘트를 달거나, github 에 문제를 추가해 주세요.커뮤니티 구성원들이 필요로 하는 기능에 우선순위를 매길 수 있다면 기쁘겠습니다.
Perl 코어에 내장된 모듈을 사용하여 다음 명령줄 파서(필요에 따라 bash 에일리어스에 넣을 수 있습니다)를 사용할 수 있습니다.
perl -MData::Dumper -MJSON::PP=from_json -ne'print Dumper(from_json($_))'
체크 아웃 Tick
진정한 Bash JSON 파서입니다.
#!/bin/bash
. /path/to/ticktick.sh
# File
DATA=`cat data.json`
# cURL
#DATA=`curl http://foobar3000.com/echo/request.json`
tickParse "$DATA"
echo ``pathname``
echo ``headers["user-agent"]``
스택에 node.js 및 npm이 있는 경우 JSON 명령줄 처리 툴킷도 있습니다.
또한 Unix 명령줄에서 JSON을 마사지하기 위한 또 다른 "json" 명령도 있습니다.
또 다른 대안은 다음과 같습니다.
- jq: http://stedolan.github.io/jq/
- fx: https://github.com/antonmedv/fx
- json: 선택:
- json-command: https://github.com/zpoley/json-command
- JSONPath: http://goessner.net/articles/JsonPath/, http://code.google.com/p/jsonpath/wiki/Javascript
- jsawk: https://github.com/micha/jsawk
- jshon: http://kmkeen.com/jshon/
- json2: https://github.com/vi/json2
관련:Unix용 JSON 입력을 해석하기 위한 명령줄 도구?
Jshon이나 JSON.sh에 대해 언급하신 분?
https://github.com/keenerd/jshon
파이프 json을 사용하여 json 객체를 통과하고 현재 객체에 대한 경로(JSON 배열)를 출력한 다음 공백 없이 객체에 대한 경로를 출력합니다.
http://kmkeen.com/jshon/http.com/jshon/
Jshon은 stdin에서 json 텍스트를 로드하고 액션을 수행한 다음 stdout에서 마지막 액션을 표시하며 일반 텍스트 처리 파이프라인의 일부로 만들었습니다.
이 답변에 제시된 바와 같이 jsawk을 시도해 볼 수 있습니다.
이 작업을 수행하기 위해 빠른 python 스크립트를 작성할 수 있습니다.
Bash/Python은 Python의 기본 랩퍼입니다.simplejson:
json_parser() {
local jsonfile="my_json_file.json"
local tc="import simplejson,sys; myjsonstr=sys.stdin.read(); "`
`"myjson=simplejson.loads(myjsonstr);"
# Build python print command based on $@
local printcmd="print myjson"
for (( argn=1; argn<=$#; argn++ )); do
printcmd="$printcmd['${!argn}']"
done
local result=$(python -c "$tc $printcmd.keys()" <$jsonfile 2>/dev/null \
|| python -c "$tc $printcmd" <$jsonfile 2>/dev/null)
# For returning space-separated values
echo $result|sed -e "s/[]|[|,|']//g"
#echo $result
}
실제로 네스트된 사전 형식의 데이터만 처리할 수 있지만, 필요한 데이터를 처리할 수 있어 json을 통과하는 데 유용합니다.아마 입맛에 맞출 수 있을 거예요.
어쨌든, 또 다른 외부 의존의 원천이 되고 싶지 않은 사람들을 위해 자체 개발한 것입니다.물론 비단뱀만 빼고요.
예.json_parser {field1} {field2}실행하다print myjson['{field1}']['{field2}']키 또는 관련 값 중 하나를 나타냅니다.{field2}, 공백으로 구분됩니다.
큰 json 객체를 쉽게 탐색할 수 있도록 만든 작은 명령줄 json 탐색기인 jkid를 만들었습니다.오브젝트는 "횡단적으로" 탐색할 수 있으며 콘솔 오버플로를 방지하기 위해 "미리 보기" 옵션이 있습니다.
$ echo '{"john":{"size":20, "eyes":"green"}, "bob":{"size":30, "eyes":"brown"}}' > test3.json
$ jkid . eyes test3.json
object[.]["eyes"]
{
"bob": "brown",
"john": "green"
}
언급URL : https://stackoverflow.com/questions/3858671/unix-command-line-json-parser
'programing' 카테고리의 다른 글
| React 프로젝트의 .gitignore에 있어야 하는 파일 또는 폴더는 무엇입니까? (0) | 2023.03.25 |
|---|---|
| 유형 스크립트의 어레이 VS 유형[ ] (0) | 2023.03.25 |
| golang json marshal: 빈 중첩 구조를 생략하는 방법 (0) | 2023.03.25 |
| 스프링 부트 - 저장소 필드에는 'entityManagerFactory'라는 이름의 빈을 찾을 수 없습니다. (0) | 2023.03.25 |
| Angular JS는 HTML로 코멘트를 남깁니다.삭제 가능합니까? (0) | 2023.03.25 |