[json] 유닉스 커맨드 라인 JSON 파서? [닫은]

파이프 라인에서 JSON 응답의 값을 검사하는 데 사용할 수있는 유닉스 (향기 선택) JSON 파서를 추천 할 수 있습니까?



답변

Perl 코어에 내장 된 모듈을 사용하여이 명령 행 구문 분석기 (원하는 경우 bash 별명에 넣을 수 있음)를 사용할 수 있습니다.

perl -MData::Dumper -MJSON::PP=from_json -ne'print Dumper(from_json($_))'


답변

내가 선호하는 python -m json.tool기본 당 대부분의 * nix에서 스크립트 운영 체제에서 기본적 당 사용할 수 보인다.

$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
    "bar": 2,
    "foo": 1
}

그러나 이것은 모든 키를 알파벳순으로 정렬하므로 정렬되지 않은 HashMaps를 사용하는 일부 언어로 json이 생성 된 경우 또는 좋은 것일 수 있습니다 …


답변

휴대용 C 컴파일 도구를 찾고 있다면 :

http://stedolan.github.com/jq/

웹 사이트에서 :

jq는 JSON 데이터에 대한 sed 와 같습니다. 이를 사용하여 sed , awk , grep 및 friends가 텍스트를 사용할 수 있는 것과 동일한 방식으로 구조화 된 데이터를 슬라이스 및 필터링하고 매핑하고 변환 할 수 있습니다.

jq는 적은 노력으로 원하는 데이터 형식을 원하는 형식으로 변환 할 수 있으며 그렇게하는 프로그램은 종종 예상보다 짧고 단순합니다.

튜토리얼 : http://stedolan.github.com/jq/tutorial/
매뉴얼 : http://stedolan.github.com/jq/manual/
다운로드 : http://stedolan.github.com/jq/download/


답변

커맨드 라인 JSON 조작을 위해 특별히 설계된 모듈을 만들었습니다.

https://github.com/ddopson/underscore-cli

  • FLEXIBLE -JSON 데이터 처리를위한 “스위스-아미-나이프”도구-간단한 프리티 프린터 또는 완전한 Javascript 명령 줄로 사용할 수 있습니다
  • POWERFUL -underscore.js의 모든 기능을 제공합니다 (underscore.string 포함)
  • SIMPLE은 – “펄 -pe”를 사용하여 유사한 JS 하나 라이너 쓸 간단 만든다
  • CHAINED- 여러 명령 호출을 서로 연결하여 데이터 처리 파이프 라인을 만들 수 있습니다.
  • 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에 문제를 추가하십시오. 커뮤니티 회원이 필요로하는 기능의 우선 순위를 정하게되어 기쁩니다.


답변

체크 아웃 틱틱 .

진정한 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"]``


답변

또한이 툴킷을 처리 JSON 명령 줄 당신이 당신의 스택 Node.js를하고 NPM이 일어날 경우는.

그리고 유닉스 명령 행에서 JSON을 마사지하기위한 또 다른 “json”명령 .

그리고 다른 대안이 있습니다 :


관련 : Unix 용 JSON 입력을 구문 분석하기위한 명령 줄 도구?


답변

Jshon 또는 JSON.sh를 언급 한 사람이 있습니까?

https://github.com/keenerd/jshon

json을 파이프하고 json 객체를 가로 지르고 현재 객체 (JSON 배열로)에 대한 경로를 인쇄 한 다음 공백없이 객체를 인쇄합니다.

http://kmkeen.com/jshon/
Jshon은 stdin에서 json 텍스트를로드하고 작업을 수행 한 다음 stdout에 마지막 작업을 표시하며 일반적인 텍스트 처리 파이프 라인의 일부로 만들어졌습니다.