본문 바로가기
LINUX

jq를 이용하여 json 값 추출

by Rainbound-IT 2022. 10. 12.
반응형

 

요즘 json 많이 사용하므로 jq를 사용하는게 굉장히 편리합니다.

 

 

 

설치

jq 설치는 간단합니다.

 

apt install jq

위 명령어만 입력해주면 됩니다.

 

 

 

사용방법

사용방법은 다음과 같습니다.

jq .key *.json

 

jq [옵션] [.추출할 키] [json파일]

이런식입니다.

 

근데 이게 좀 독특한게 

 

키 다음 키 있을경우

보통 .키.키 

마침표를 찍으면 잘 출력이 되는데

json에서 대괄호, 중괄호로 섞여 묶여 있는경우는  꼬일때도 있습니다.

 

 

예제

 

{
  "entries": [
    {
      "Name": "cat",
      "size": "100"
    },
    {
      "Name": "dog",
      "size": "200"
    }
  ]
}

이런 test.json 파일이 있습니다.

여기서 Name의 value 값을 공백포함에서 출력하고 싶습니다.

 

jq -c .entries.Name test.json

하면 공백은 없어도 한줄로는 출력이 될줄 알았으나 안되더군요.

대괄호는 다른 옵션을 줘야하나 봅니다.

 

jq -r '.entries | map(.Name) | join(" ")' test.json

 

다음과 같이 하면

cat dog 

이런식으로 출력되는것을 확인하실수 있습니다.

 

 

 

windows 에서 jq

그대로 치면 다음과 같은 에러가 발생합니다.

jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Windows cmd shell quoting issues?) at <top-level>, line 1:

 

" 쌍따옴표인 경우 앞에 백슬러쉬를 해줘야합니다.

 

jq -r '.entries | map(.Name) | join(\" \")' test.json

이런식으로 말이죠.

 

 

https://stackoverflow.com/questions/54683103/simple-jq-filters-not-working-in-windows-shell-various-quoting-issues

 

Simple jq filters not working in Windows shell, various quoting issues

I am trying really hard to get the Windows shell working with jq and failing miserably. I want this type of thing to work echo '["a","b","c"]' | .\Downloads\jq.exe -r '{ "data": map({ "{#SNAME}...

stackoverflow.com

 

 

 

 

 

 

 

 

Reference

 

jq 공식 메뉴얼

https://stedolan.github.io/jq/manual/

 

jq Manual (development version)

jq Manual (development version) For released versions, see jq 1.6, jq 1.5, jq 1.4 or jq 1.3. A jq program is a "filter": it takes an input, and produces an output. There are a lot of builtin filters for extracting a particular field of an object, or conver

stedolan.github.io

 

 

 

https://stackoverflow.com/questions/69198107/extract-values-from-json-using-jq

 

extract values from JSON using jq

I have a JSON object that looks like this: { "Accounts": [ { "Id": "1", "Name": "Joe", "Zip&qu...

stackoverflow.com

 

jq 옵션만 정리

https://fig.io/manual/jq

 

Fig

The next-generation command line.

fig.io

 

커맨드라인 JSON 프로세서 jq : 기초 문법과 작동원리 | 44BITS

 

커맨드라인 JSON 프로세서 jq : 기초 문법과 작동원리

jq는 커맨드 라인 JSON 프로세서입니다. JSON 데이터를 입력받아 데이터를 필터링하거나 변형합니다. jq의 기본적인 문법과 작동 원리를 소개합니다.

www.44bits.io

 

 

 

 

 

반응형

댓글