jsonPath: JSON 응답 구조 및 리프 노드 값 추출
상위 맥락
03. 검증과 응답 분석 < 01. Controller 단위 테스트 < 02. Spring MVC2 핵심 기술과 설계 < MVC < Spring < Web
핵심 정리
jsonPath는 @ResponseBody 기반 REST 응답처럼 application/json 형태로 내려온 응답 본문을 세밀하게 검증하기 위한 매처입니다. 자료에서는 JSON의 루트 엘리먼트, 속성, 배열 인덱스, 중첩 객체의 리프 노드까지 접근할 수 있는 도구로 설명합니다.
표현식 읽는 법
$: JSON 응답의 루트 엘리먼트입니다.$.name: 루트 하위의 name 속성 값을 추출합니다.$.hobby[0]: hobby 배열의 첫 번째 요소를 추출합니다.$.hobby[0].name: 배열 내부 객체의 name 속성까지 접근합니다.$.hobby.length(): 배열의 길이를 검증합니다.
검증 흐름
일반적으로 JSON 응답 검증은 다음 순서로 이해하면 됩니다.
- status로 HTTP 응답 상태를 확인합니다.
- contentType으로 JSON 응답인지 확인합니다.
- jsonPath로 본문의 특정 필드와 값을 확인합니다.
자료에서는 jsonPath("$.name", equalTo("hong gil dong"))처럼 특정 리프 노드 값을 기대값과 비교하는 방식이 소개됩니다.
의미
jsonPath를 사용하면 응답 문자열을 직접 파싱하지 않고도, 클라이언트와 약속한 JSON 구조가 맞는지 검증할 수 있습니다. 이는 REST API 테스트에서 응답 계약을 확인하는 가장 직접적인 방법입니다.
한 문장 요약
jsonPath는 JSON 응답을 루트부터 리프 노드까지 경로 표현식으로 탐색하여, 응답 구조와 값을 정밀하게 검증하게 해주는 도구입니다.
핵심 연결
@ResponseBody와 함께 읽으면 좋습니다.