Об этом проекте

Jayway JsonPath — это Java-библиотека, реализующая язык запросов JsonPath, позволяющая разработчикам извлекать данные из JSON-документов с помощью выражений пути, аналогичных XPath для XML. Это порт реализации JsonPath Стефана Гёсснера, доступный на Maven Central. ## Ключевые возможности - **Выражения пути**: Поддерживает точечную нотацию (`$.store.book[0].title`) и скобочную нотацию (`$['store']['book'][0]['title']`) для навигации по структурам JSON. - **Операторы**: Включает подстановочные знаки (`*`), глубокое сканирование (`..`), срезы массивов (`[start:end]`) и выражения фильтрации (`[?(<выражение>)]`). - **Функции**: Встроенные функции, такие как `min()`, `max()`, `avg()`, `length()`, `sum()`, `first()`, `last()` и другие, которые можно применять в конце пути. - **Предикаты фильтрации**: Поддерживает логические операторы (`&&`, `||`, `!`) и операторы сравнения (`==`, `!=`, `<`, `>`, `=~`, `in`, `nin` и т.д.) для сложной фильтрации. - **Гибкий API**: Предоставляет гибкий `ReadContext` для повторного чтения без повторного разбора JSON-документа. - **Варианты конфигурации**: Настраивается через флаги `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'.