jq 놀이터
jq Playground
JSON 가공 연습장 — 실전 샘플 데이터에 jq 필터를 실시간으로 실행하고, 레시피 갤러리와 연습 미션 10개로 jq를 익혀보세요.
히스토리 (0)
아직 기록이 없어요. 필터가 성공적으로 실행되면 최근 15개까지 저장됩니다.
JSON 입력
결과
jq 엔진 로딩 중…
WASM 약 1.5MB, 최초 1회만 내려받아요
필터 레시피 갤러리
레시피를 클릭하면 필터와 어울리는 샘플 데이터가 함께 적용됩니다.
기본
변환
집계
문자열
실전
연습 미션
0 / 10 완료미션의 샘플 데이터를 불러와 필터를 작성한 뒤 채점해 보세요. 채점은 항상 해당 미션의 원본 샘플 데이터 기준으로 실행됩니다.
- 1
PullRequestEvent만 골라 저자(actor.login) 목록을 배열로 만드세요
샘플: GitHub 이벤트 (배열)
- 2
이벤트에 등장한 저장소 이름(repo.name)을 중복 없이 정렬된 배열로 만드세요
샘플: GitHub 이벤트 (배열)
- 3
phase가 "Running"인 Pod의 이름만 배열로 뽑으세요
샘플: Kubernetes PodList
- 4
지금 실행 중(state.running)인 컨테이너 이름만 배열로 뽑으세요
샘플: Kubernetes PodList
- 5
모든 컨테이너의 restartCount 총합을 구하세요
샘플: Kubernetes PodList
- 6
전체 주문 총액을 구하세요 (모든 item의 price × qty 합산)
샘플: 쇼핑몰 주문 (중첩)
- 7
status가 "delivered"인 주문의 orderId만 배열로 뽑으세요
샘플: 쇼핑몰 주문 (중첩)
- 8
고객 등급(tier)별 주문 수를 객체로 만드세요 (예: {"basic": 1, ...})
샘플: 쇼핑몰 주문 (중첩)
- 9
ERROR 레벨 로그가 몇 개인지 세어보세요
샘플: 서버 로그 (배열)
- 10
latency_ms가 가장 큰 로그의 message를 구하세요
샘플: 서버 로그 (배열)
▸jq 치트시트 (연산자 · 함수)
경로 & 연산자
| 표현식 | 설명 |
|---|---|
.foo / .foo.bar | 키 접근 / 중첩 키 접근 |
.foo? | 키가 없어도 에러 대신 null |
.[0] / .[-1] | 배열 인덱스 (음수는 뒤에서부터) |
.[1:3] | 배열 슬라이스 (1 이상 3 미만) |
.[] | 배열/객체를 낱개 값 스트림으로 펼치기 |
a | b | 파이프: a의 출력을 b의 입력으로 |
a, b | 여러 출력을 순서대로 내보내기 |
a // b | a가 null/false면 b (기본값) |
.. | 재귀 탐색 (모든 하위 값 방문) |
. as $x | ... | 현재 값을 변수 $x에 바인딩 |
"이름: \(.name)" | 문자열 보간 (interpolation) |
if A then B else C end | 조건 분기 |
try A catch B | 에러가 나면 B로 대체 |
자주 쓰는 함수
| 표현식 | 설명 |
|---|---|
length / keys / values | 길이 / 키 배열 / 값 배열 |
has("k") / type | 키 존재 여부 / 값의 타입 |
map(f) / select(f) | 각 요소 변환 / 조건 필터 |
map_values(f) | 객체의 값만 일괄 변환 |
add / any / all | 합치기(합계·연결) / 하나라도 / 모두 |
flatten | 중첩 배열 평탄화 |
sort / sort_by(f) / reverse | 정렬 / 기준 정렬 / 뒤집기 |
group_by(f) | 기준값으로 묶어 배열의 배열로 |
unique / unique_by(f) | 중복 제거 (정렬됨) |
min_by(f) / max_by(f) | 기준값이 최소/최대인 요소 |
reduce .[] as $x (0; . + $x) | 누적 계산 |
to_entries / from_entries | 객체 ↔ key/value 쌍 배열 |
with_entries(f) | to_entries → 변환 → from_entries 축약 |
del(.a) | 키 삭제 |
tostring / tonumber | 문자열 ↔ 숫자 변환 |
split(",") / join(",") | 문자열 쪼개기 / 배열 잇기 |
startswith / endswith / contains | 문자열 검사 |
test("re"; "i") / capture | 정규식 매칭 / 그룹 추출 |
ascii_downcase / ascii_upcase | 소문자 / 대문자 변환 |
@csv / @tsv / @json / @base64 | 포맷 변환 (-r과 함께) |