본문으로 건너뛰기

jq 실습장

jq Playground

브라우저에서 붙여넣은 JSON에 jq 1.7 필터를 실행하고 치트시트와 함께 같은 결과를 내는 명령줄을 만들어 줍니다.

jq 필터를 브라우저에서 문서에 실행합니다. 문자열 조작 몇 가지가 아니라 jq 1.7 문법을 구현한 인터프리터라서, 파이프와 `reduce`, `def`, 구조 분해, 갱신 연산자가 명령줄에서와 같이 동작합니다. 필터 아래에 같은 일을 하는 셸 명령이 함께 나옵니다.

🔒 브라우저 안에서만 처리jqjsonqueryplayground

필터

jq '.orders[] | select(.status == "shipped") | {id, customer}' data.json

입력 JSON

.json 파일 놓기

이 탭 안에서만 읽습니다. 어디에도 올라가지 않습니다.

출력 1개

출력

1

걸린 시간

<1 ms

종류

object

jq 1.7 문법을 직접 구현한 인터프리터입니다. 경로(.a[0].b, .., ?), |·,·//, 산술·비교·and·or·not, 문자열 끼워 넣기, if·try·reduce·foreach·as(구조 분해 포함)·def, 그리고 |=·+= 같은 갱신, @base64·@csv 같은 포맷, 아래 내장 함수 180개를 지원합니다. 테스트는 jq 매뉴얼의 예제를 그대로 씁니다.

지원하지 않는 것: input·inputs(문서가 하나뿐입니다), $ENV·env(비어 있음), label·break, --stream, @sh의 중첩 배열, strptime의 ISO 8601 외 형식, getpath 스트림 모드, 모듈(import). 정규식은 jq의 Oniguruma가 아니라 브라우저 엔진이라 \p{L}과 이름 있는 그룹은 되고, 후방 탐색 같은 미묘한 차이가 있을 수 있습니다.

경로 하나만 고르는 거라면 JSONPath 테스터가 더 간단할 수 있습니다.

사용 방법

  1. 문서를 붙여넣습니다

    JSON 값 하나, 또는 여러 개가 이어져 있어도 됩니다. jq의 입력 스트림처럼 읽고, 값이 몇 개인지 칸 제목에 표시합니다.

  2. 필터를 쓰거나 예시에서 고릅니다

    자주 나오는 형태를 버튼으로 담았습니다. select, map, group_by, 문자열 끼워 넣기, reduce, 갱신 연산자 같은 것들입니다. 마우스를 올리면 무엇을 하는지 나옵니다.

  3. 명령줄에서 쓸 플래그를 켭니다

    출력 하나에 한 줄이면 `-c`, 키 정렬은 `-S`, 문자열을 따옴표 없이 내려면 `-r`, 여러 입력을 배열 하나로 모으려면 `-s`입니다. 아래 명령줄이 함께 갱신됩니다.

  4. 출력만이 아니라 명령도 복사합니다

    만들어진 `jq …` 줄은 POSIX 셸 기준으로 따옴표가 제대로 쳐져 있어서, 스크립트나 파이프라인에 그대로 넣을 수 있습니다.

자주 묻는 질문

이게 정말 jq인가요?

jq 문법을 따로 구현한 인터프리터이고, 테스트는 jq 매뉴얼의 예제를 그대로 씁니다. 언어와 흔히 쓰는 내장 함수를 다룹니다. jq 자체를 컴파일한 것이 아니라서, jq의 C 내부에 기대는 것은 다르게 동작합니다.

`input`은 왜 안 되나요?

여기에는 문서가 하나뿐이고, 필터가 더 끌어올 스트림이 없기 때문입니다. `input`, `inputs`, `$ENV`, `env`, `label`/`break`, `--stream`, 모듈은 이유 없이 실패하는 대신 페이지에 지원하지 않는다고 적어 두었습니다.

정규식이 jq와 다르게 동작합니다.

jq는 Oniguruma를 쓰고 여기서는 브라우저 엔진을 씁니다. 실제로 `\p{L}`과 이름 있는 그룹은 양쪽에서 되고, 차이는 후방 탐색과 몇몇 문자 클래스 이스케이프에서 나타납니다. 중요한 패턴이라면 실제로 돌릴 환경에서 확인하세요.

출력 5,000개에서 멈췄습니다.

단계 수 제한과 함께 일부러 둔 한계입니다. 큰 문서에 `..`를 걸면 출력이 엄청나게 나오고, 재귀가 폭주하는 필터는 탭을 멈추게 합니다. 필터를 좁히거나, `head`로 넘길 수 있는 명령줄에서 돌리세요.

이 도구로 이어지는 것

다음 단계

이 도구의 결과를 그대로 받을 수 있는 도구들입니다.