JSON 도구

JMESPath 테스트기필요한 값과 구조를 함께 확인

나이 필터를 버튼 또는 Ctrl/Cmd+Enter로 실행하세요. 입력이나 표현식을 수정하면 다시 실행해야 합니다.

JMESPath 테스트기

JSON 입력

결과

미리 보기는 5,000자씩 표시합니다. 복사와 다운로드에는 전체 결과가 포함됩니다.

JSON과 표현식은 브라우저 메모리에만 있으며 저장하지 않습니다.

공식 jmespath.js 0.16.0 · 안전 패치 · 표준 함수 26개

결과가 오래되어 복사와 다운로드를 사용할 수 없습니다.

JMESPath 테스트기는 클라우드 응답에서 이름 목록이나 개수만 필요한 상황에 유용합니다. 값뿐 아니라 반환되는 구조도 확인하면 스크립트가 객체와 배열을 혼동하는 문제를 미리 찾을 수 있습니다.

JSON 데이터에 짧은 JMESPath 표현식을 적용해 보세요. 예제 쿼리로 필드 투영과 새 객체 구성을 비교할 수 있으며 원본 문서는 변경하지 않습니다.

JMESPath 테스트기를 사용하는 이유

조건에 맞는 항목에서 필드 추출

나이 조건으로 사람을 고른 다음 이름을 투영합니다. 투영 결과가 null인 항목은 빠지므로 결과 길이가 원래 배열과 같다고 가정하면 안 됩니다. 위치를 보존해야 한다면 다중 선택 목록의 동작도 확인하세요.

여러 레코드가 조건을 통과하고 선택한 필드가 작은 목록으로 모이는 그림.

다음 작업에 맞는 객체 구성

이름 배열과 개수를 하나의 객체에 넣거나 속성으로 정렬할 수 있습니다. JMESPath 테스트기로 실제 반환 키와 타입을 확인한 뒤 같은 표현식을 스크립트로 옮기세요.

필드가 새 객체를 이루고 함수가 컬렉션을 하나의 값으로 계산하는 그림.

타입과 실행 시점을 확인하세요

01

엄격한 JSON 준비

붙여넣기 또는 로컬 파일을 사용할 수 있습니다. 파일은 500,000바이트, 읽은 입력은 500,000자까지입니다. 가져오기, 예제, 비우기는 교체 미리 보기 후 적용하며 한 번 되돌리면 표현식과 결과도 복원됩니다. 파일은 올바른 UTF-8이어야 합니다. BOM을 자동 제거하지 않으며 JSON 검사에서 오류가 납니다.

02

수정 후 직접 실행

자동 실행은 없으며 Ctrl/Cmd+Enter도 사용할 수 있습니다. 예제 쿼리를 선택하면 표현식만 바뀝니다. 입력이 바뀌면 이전 결과가 오래된 상태가 되어 새 실행이 성공할 때까지 복사와 다운로드를 막습니다.

03

미리 보기와 전체 값 구분

null, false, 0, 빈 문자열과 []는 모두 정상 결과일 수 있습니다. 미리 보기는 5,000자씩 추가하지만 복사와 다운로드에는 허용된 전체 결과가 포함됩니다.

필터링부터 구조화와 계산까지

숫자 조건으로 배열 필터링

people[?age >= `18`].name은 나이를 숫자로 비교한 다음 이름을 반환합니다. 숫자 리터럴은 백틱으로 감싸며 숫자가 들어 있는 문자열은 숫자 타입과 다릅니다.

이름이 있는 결과 필드

{names: people[].name, count: length(people)}로 배열과 개수를 새 객체에 담습니다. 다중 선택 목록은 투영에서 생략되는 null을 원래 위치에 남길 수 있습니다.

파이프와 표현식 참조

파이프는 왼쪽 전체 결과를 오른쪽 식에 넘깁니다. sort_by의 &age는 표현식 참조로, 속성 이름을 적은 일반 문자열과 다릅니다. 각 함수가 요구하는 인수 타입을 확인하세요.

빈 값과 오류 분리

잘못된 JSON, 문법, 알 수 없는 함수, 인수 개수와 타입 오류를 구별합니다. 없는 키를 조회해 null이 나오면 정상 값으로 표시하며 구문 오류로 바꾸지 않습니다.

지원 문법과 처리 제한

고정된 엔진과 표준 함수
공식 jmespath.js 0.16.0에 안전 패치를 적용하고 표준 함수 26개를 사용합니다. JSONPath, jq, group_by, 정규식 확장, 사용자 함수와 임의 JavaScript는 지원하지 않습니다. 백틱 안에는 엄격한 JSON만 허용하며 원시 문자열은 작은따옴표로 씁니다. 표현식 참조는 함수 인수 전용이며 출력값으로 반환하지 않습니다.
정확한 십진수 연산은 아님
중복 키, 주석과 끝 쉼표는 거부합니다. 입력, 리터럴과 결과의 안전하지 않은 정수 및 숫자 오버플로도 오류입니다. 일반 소수는 JavaScript 숫자를 사용하며 원래 숫자 표기를 보존하지 않습니다. sum이나 avg의 중간 합계가 안전하지 않은 정수이면 최종 수학적 값이 안전하더라도 거부합니다.
유한한 실행 자원
입력 500,000자, 표현식 2,000자, 출력 2,000,000자까지이며 구조와 평가 예산도 적용합니다. Worker는 2초가 지나면 중단됩니다. 제한을 넘으면 부분 결과를 다운로드할 수 없습니다.
원본 경로는 반환하지 않음
반환값은 하나의 JSON 값이며 정규화된 원본 경로 목록이 아닙니다. 재귀 JSONPath 검색, 원본 수정과 CSV 내보내기도 제공하지 않습니다. 없는 필드와 명시적인 null이 같은 결과를 낼 수 있습니다.
현재 브라우저 메모리에서만 처리
기록 저장, URL 가져오기나 데이터를 담은 공유 링크를 만들지 않습니다. 로컬 파일도 브라우저에서 처리하며 페이지를 새로 고치면 현재 작업은 사라집니다.

JMESPath 테스트기 자주 묻는 질문

여러 값을 가져오려면 어떻게 하나요?

{names: people[].name, count: length(people)} 같은 다중 선택 객체로 여러 결과를 묶을 수 있습니다. 배열과 개수를 한 객체에 반환하며 입력 문서는 그대로입니다.

쿼리에서 속성 이름을 바꾸려면 어떻게 하나요?

people[].{label: name}처럼 콜론 앞에 새 키를 적습니다. name을 읽어 label이라는 이름으로 반환합니다. 원래 필드가 없으면 새 객체의 값은 null이 될 수 있습니다.

배열의 속성을 가져오려면 어떻게 하나요?

people[].name으로 배열 요소의 name을 투영합니다. 이때 null 결과는 생략됩니다. 예상한 목록이 나오지 않으면 실제 배열 단계와 필드 철자를 확인하세요.

부울 식으로 배열을 필터링하려면 어떻게 하나요?

people[?active == `true`].name은 active가 부울 true인 사람을 남깁니다. 문자열 'true'와는 다릅니다. JMESPath 테스트기에서 조건을 하나씩 확인하고 논리 연산자로 결합하세요.

파이프 식은 어떻게 동작하나요?

people[].name | [0]은 먼저 전체 이름 목록을 만든 뒤 첫 번째 요소를 선택합니다. 파이프가 전달하는 것은 JSON 값이며 운영체제 명령을 실행하지 않습니다.

쿼리가 예상과 다르게 처리되나요?

짧은 쿼리부터 확인

JMESPath 테스트기의 예제에서 조건 하나를 바꾸고 결과 타입을 확인한 다음 실제 응답에 적용하세요.