비슷한 도구가 있나요XML 스타하지만 XML 대신 JSON의 경우?
내 사용 사례: 일부 REST API에서 반환되는 계층적 JSON 문서에서 특정 값을 추출합니다.
XPath와 같은 표현을 통해 노드와 같은 것을 선택할 수 있으면 도움이 될 것입니다.
답변1
jq는 풍부한 표현 언어를 제공합니다JSON 문서에서 요소를 선택하는 데 사용됩니다.
sel
따라서 XPath 표현식을 사용하는 명령 과 유사합니다 .xmlstartlet
예를 들어 Digital Ocean에서 사용 가능한 CentOS 7 커널 버전 목록을 레코드 형식으로 추출하려면 다음을 수행합니다.
$ jq '[ .kernels[] | select(.name | test("^CentOS 7 x64")) | del(.name)
| "\(.version) \(.id)"] | .[]' kernels.json
또는 다음과 같이 단순화했습니다.
jq '.kernels[] | select(.name | test("^CentOS 7 x64")) |
"\(.version) \(.id)" ' kernels.json
json은 다음과 같이 얻을 수 있습니다.
$ curl -o kernels.json -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $bearer" \
"https://api.digitalocean.com/v2/droplets/$droplet/kernels?page=1&per_page=1000"
게다가객체 경로, 다른 JSON 쿼리 언어 - jq가 더 널리 사용 가능한 것으로 보이지만(예: Fedora 23에 패키지되어 있음)
여러 바인딩이 있는 jq와 같은 프로그램에서 이러한 쿼리 조각을 재사용하는 것은 쉽습니다(예:파이썬의 경우) 및 ObjectPath는 Python 모듈로도 사용할 수 있습니다.