Skip to content
Tools/jq 놀이터

jq 놀이터

jq Playground

JSON 가공 연습장 — 실전 샘플 데이터에 jq 필터를 실시간으로 실행하고, 레시피 갤러리와 연습 미션 10개로 jq를 익혀보세요.

히스토리 (0)

아직 기록이 없어요. 필터가 성공적으로 실행되면 최근 15개까지 저장됩니다.

JSON 입력

결과

jq 엔진 로딩 중…

WASM 약 1.5MB, 최초 1회만 내려받아요

필터 레시피 갤러리 (50개)

레시피를 클릭하면 필터와 어울리는 샘플 데이터가 함께 적용됩니다.

연습 미션

0 / 20 완료

미션의 샘플 데이터를 불러와 필터를 작성한 뒤 채점해 보세요. 채점은 항상 해당 미션의 원본 샘플 데이터 기준으로 실행됩니다.

기본0/10 완료
  1. 1

    PullRequestEvent만 골라 저자(actor.login) 목록을 배열로 만드세요

    샘플: GitHub 이벤트 (배열)

  2. 2

    이벤트에 등장한 저장소 이름(repo.name)을 중복 없이 정렬된 배열로 만드세요

    샘플: GitHub 이벤트 (배열)

  3. 3

    phase가 "Running"인 Pod의 이름만 배열로 뽑으세요

    샘플: Kubernetes PodList

  4. 4

    지금 실행 중(state.running)인 컨테이너 이름만 배열로 뽑으세요

    샘플: Kubernetes PodList

  5. 5

    모든 컨테이너의 restartCount 총합을 구하세요

    샘플: Kubernetes PodList

  6. 6

    전체 주문 총액을 구하세요 (모든 item의 price × qty 합산)

    샘플: 쇼핑몰 주문 (중첩)

  7. 7

    status가 "delivered"인 주문의 orderId만 배열로 뽑으세요

    샘플: 쇼핑몰 주문 (중첩)

  8. 8

    고객 등급(tier)별 주문 수를 객체로 만드세요 (예: {"basic": 1, ...})

    샘플: 쇼핑몰 주문 (중첩)

  9. 9

    ERROR 레벨 로그가 몇 개인지 세어보세요

    샘플: 서버 로그 (배열)

  10. 10

    latency_ms가 가장 큰 로그의 message를 구하세요

    샘플: 서버 로그 (배열)

응용0/5 완료
  1. 1

    WARN과 ERROR 레벨 로그의 message를 순서대로 배열에 담으세요

    샘플: 서버 로그 (배열)

  2. 2

    고객 이메일을 전부 소문자로 바꾼 배열을 만드세요

    샘플: 쇼핑몰 주문 (중첩)

  3. 3

    이벤트 type별 개수를 객체로 만드세요 (예: {"PushEvent": 2, ...})

    샘플: GitHub 이벤트 (배열)

  4. 4

    모든 컨테이너의 image를 중복 없이 정렬된 배열로 뽑으세요

    샘플: Kubernetes PodList

  5. 5

    latency_ms 상위 3개 로그의 message를 느린 순서대로 배열에 담으세요

    샘플: 서버 로그 (배열)

심화0/5 완료
  1. 1

    서비스별 latency_ms 총합을 구해 큰 순서대로 상위 2개를 [{service, total}] 형태로 만드세요

    샘플: 서버 로그 (배열)

  2. 2

    주문 리포트 CSV를 만드세요: 헤더 "orderId","buyer","total" 행 다음에 주문별 (ID, 고객명, 총액) 행

    샘플: 쇼핑몰 주문 (중첩)

  3. 3

    재귀 하강(..)으로 문서 어디에 있든 email 값을 전부 찾아 배열로 모으세요

    샘플: 쇼핑몰 주문 (중첩)

  4. 4

    restartCount가 0보다 큰 컨테이너를 [Pod이름, 컨테이너이름] 쌍의 배열로 만드세요

    샘플: Kubernetes PodList

  5. 5

    ERROR 로그의 timestamp를 유닉스 시간(초)으로 변환한 배열을 만드세요 (strptime + mktime)

    샘플: 서버 로그 (배열)

jq 치트시트 (연산자 · 함수)

경로 & 연산자

표현식설명
.foo / .foo.bar키 접근 / 중첩 키 접근
.foo?키가 없어도 에러 대신 null
.[0] / .[-1]배열 인덱스 (음수는 뒤에서부터)
.[1:3]배열 슬라이스 (1 이상 3 미만)
.[]배열/객체를 낱개 값 스트림으로 펼치기
a | b파이프: a의 출력을 b의 입력으로
a, b여러 출력을 순서대로 내보내기
a // ba가 null/false면 b (기본값)
..재귀 탐색 (모든 하위 값 방문)
. as $x | ...현재 값을 변수 $x에 바인딩
"이름: \(.name)"문자열 보간 (interpolation)
if A then B else C end조건 분기
try A catch B에러가 나면 B로 대체

자주 쓰는 함수

표현식설명
length / keys / values길이 / 키 배열 / null 아닌 값만 통과
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과 함께)