프로젝트 소개

Jayway JsonPath는 JsonPath 쿼리 언어를 구현한 Java 라이브러리로, 개발자가 XML에 대한 XPath와 유사한 경로 표현식을 사용하여 JSON 문서에서 데이터를 추출할 수 있게 해줍니다. Stefan Goessner의 JsonPath 구현을 포팅한 것이며 Maven Central에서 사용할 수 있습니다. ## 주요 기능 - **경로 표현식**: 점 표기법(`$.store.book[0].title`)과 대괄호 표기법(`$['store']['book'][0]['title']`)을 지원하여 JSON 구조를 탐색합니다. - **연산자**: 와일드카드(`*`), 깊은 검색(`..`), 배열 슬라이싱(`[start:end]`), 필터 표현식(`[?(<expression>)]`)을 포함합니다. - **함수**: `min()`, `max()`, `avg()`, `length()`, `sum()`, `first()`, `last()` 등 내장 함수를 경로 끝에 적용할 수 있습니다. - **필터 조건자**: 논리 연산자(`&&`, `||`, `!`)와 비교 연산자(`==`, `!=`, `<`, `>`, `=~`, `in`, `nin` 등)를 지원하여 복잡한 필터링을 수행합니다. - **유창한 API**: JSON 문서를 다시 파싱하지 않고 반복 읽기를 위한 유연한 `ReadContext`를 제공합니다. - **구성 옵션**: `Configuration` 및 `Option` 플래그(예: `ALWAYS_RETURN_LIST`, `SUPPRESS_EXCEPTIONS`)를 통해 사용자 정의할 수 있습니다. - **여러 JSON 제공자**: JSON-smart(기본값), Jackson, Gson, JSON-P, JSON-B용 제공자를 포함하여 다양한 JSON 라이브러리와 통합할 수 있습니다. - **캐시 SPI**: 파싱된 경로에 대한 플러그 가능한 캐싱을 지원하며, `LRUCache` 및 `NOOPCache` 같은 기본 구현을 제공합니다. - **문서 수정**: 특정 제공자의 변경 가능한 JSON 구조를 지원하여 JSON 문서에서 값을 설정, 추가, 삭제할 수 있습니다. ## 사용 예제 ```java String json = "..."; List<String> authors = JsonPath.read(json, "$.store.book[*].author"); ``` 반복 읽기의 경우 한 번 파싱합니다: ```java Object document = Configuration.defaultConfiguration().jsonProvider().parse(json); String author = JsonPath.parse(document).read("$.store.book[0].author"); ``` ## 요구 사항 - 버전 3.0.0은 Java 17이 필요하며 Jackson 3을 지원합니다. - Jackson, Gson, JSON-P, JSON-B 같은 제공자는 클래스패스에 추가 종속성이 필요합니다. ## 문서 자세한 내용은 [공식 문서](http://www.javadoc.io/doc/com.jayway.jsonpath/json-path)를 참조하고, Stack Overflow에서 'jsonpath' 및 'java' 태그로 질문하세요.