피드로 돌아가기
Dev.toBackend
원문 읽기
Nested JSON 순회 로직을 JSONPath 쿼리로 대체하여 코드 복잡도 제거
How to Query Nested JSON with JSONPath (Without Writing Loops)
AI 요약
Context
다층 구조의 API Response에서 특정 데이터를 추출하기 위해 다중 Loop와 조건문을 사용하는 기존 방식 채택. Schema 변경 시 Traversal 코드가 쉽게 파손되는 Brittle한 구조로 인해 유지보수 비용 증가 및 Cognitive Load 상승 문제 발생.
Technical Solution
- 선언적 쿼리 언어인 JSONPath 도입을 통한 절차적 순회 로직의 추상화
- Root($)부터 특정 Key까지의 경로를 지정하는 Path Expression 기반의 데이터 접근 설계
- Wildcard([*]) 연산자를 활용한 Array 전체 요소의 일괄적 추출 및 Flattening 처리
- Filter Expression(?())과 현재 노드 참조(@)를 통한 조건부 데이터 필터링으로 비즈니스 로직 분리
- Recursive Descent(..) 연산자를 적용한 계층 구조 독립적 Key 탐색 구조 구현
- Read-only 쿼리(JSONPath)와 Mutation(JSON Patch)의 역할 분리를 통한 책임 기반 설계 적용
실천 포인트
- API Schema 변동성이 큰 환경에서 하드코딩된 Index 접근 대신 JSONPath 도입 검토 - 대규모 JSON Payload 분석 시 Beautifier -> Validator -> Evaluator 순의 워크플로우 적용 - 사용 라이브러리(jsonpath-ng, jsonpath-plus, Jayway)별 구현 차이를 RFC 9535 표준 기반으로 검증 - 단순 데이터 추출은 JSONPath로, 문서 수정은 JSON Patch(RFC 6902)로 분리하여 처리