JSONPath
Парадигма | Язык запросов |
---|---|
Разработано | Стефан Гесснер |
Разработчик | Стефан Гесснер |
Впервые появился | 2007 (в блоге) 2024 г. (стандартизировано) |
Под влиянием | |
XPath |
Статус | Предлагаемый стандарт |
---|---|
Год начался | февраль 2024 г. |
Организация | IETF |
Редакторы | Стефан Гесснер Глин Нормингтон Карстен Борман |
Авторы | Стефан Гесснер |
Базовые стандарты | JSON |
Сопутствующие стандарты | XPath |
В компьютерном программном обеспечении JSONPath — это язык запросов для запроса значений в формате JSON . Использование JSONPath включает в себя:
- Выбор конкретного узла в значении JSON
- Получение набора узлов из значения JSON на основе определенных критериев.
- Навигация по сложным значениям JSON для получения необходимых данных.
Запросы JSONPath представляют собой выражения пути, записанные в виде строк, например $.foo
.
Пример
[ редактировать ]Выражение JSONPath $.store.book[0]
применяется к следующему значению JSON:
{
"store": {
"book": [
{ "author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 399
}
}
}
выбирает первую книгу (Найджела Риса):
{
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
}
Выражение $.store.book[*].price
извлекает цены на книги: 8,95 и 22,99 (поскольку [*]
выбирает все узлы массива).
Выражение $..price
извлекает все цены: 8,95, 22,99 и 399.
История
[ редактировать ]JSONPath впервые был описан в онлайн-статье. [ 1 ] Стефан Гесснер в феврале 2007 года. Гесснер также опубликовал первоначальные реализации на JavaScript и PHP.
Впоследствии было создано более пятидесяти реализаций на различных языках программирования. Проект сравнения JSONPath перечисляет многие из этих реализаций и сравнивает их поведение. [ 2 ] JSONPath широко используется в экосистеме Java . [ 3 ]
В 2024 году IETF опубликовал стандарт JSONPath как РФК 9535 . [ 4 ]
Исследовать
[ редактировать ]- Масштабируемая обработка современных полуструктурированных данных на товарных параллельных процессорах — подход, основанный на компиляции [ 5 ] описывает оптимизацию, которая преобразует запросы JSONPath в параллельные программы с ограниченными требованиями к памяти.
- Поддержка потомков в JSONPath с SIMD-ускорением [ 6 ] описывает оптимизацию запросов потомков JSONPath при потоковой передаче потенциально очень больших значений JSON.
- τJSONPath: временное расширение языка JSONPath для платформы τJSchema. [ 7 ] описывает временное расширение JSONPath, которое поддерживает запрос версий значения JSON по его истории версий.
Альтернативы
[ редактировать ]- JMESPath [ 8 ] — это язык запросов для JSON с функциями, выходящими далеко за рамки JSONPath. У него есть спецификация, набор тестов на соответствие и несколько реализаций на разных языках.
- JSON-поддерживаемый [ 9 ] Язык запросов и преобразования данных JSON с открытым исходным кодом, созданный на основе XPath 3.1.
- Указатель JSON [ 10 ] определяет синтаксис строки для идентификации одного значения в пределах заданного значения JSON известной структуры.
- JSONiq [ 11 ] — это язык запросов и преобразований для JSON.
- XPath 3.1 [ 12 ] — это язык выражений, который позволяет обрабатывать значения, соответствующие XDM. [ 13 ] модель данных. Версия 3.1 XPath поддерживает как JSON, так и XML.
- jq это как sed для данных JSON — вы можете использовать его для разделения, фильтрации, сопоставления и преобразования структурированных данных.
Ссылки
[ редактировать ]- ^ Гесснер, Стефан. «JSONPath — XPath для JSON» . Архивировано из оригинала 11 сентября 2007 года . Проверено 22 марта 2024 г.
- ^ Бургмер, Кристоф. «Сравнение JSONPath» . Архивировано из оригинала 3 марта 2024 года . Проверено 22 марта 2024 г.
- ^ Фризен, Джефф (11 января 2019 г.). «Извлечение значений JSON с помощью JsonPath». Java XML и JSON: обработка документов для Java SE (2-е изд.). Апресс. ISBN 978-1484243299 .
- ^ Гесснер, Стефан; Нормингтон, Глин; Борман, Карстен (февраль 2024 г.). «RFC 9535 JSONPath: выражения запроса для JSON» . Серия RFC . Рабочая группа по проектированию Интернета (IETF) . Проверено 22 марта 2024 г.
- ^ Цзян, Линь; Сунь, Сяофань; Фарук, Умар; Чжао, Чжицзя (апрель 2019 г.). «Масштабируемая обработка современных полуструктурированных данных на товарных параллельных процессорах - подход, основанный на компиляции». Материалы двадцать четвертой Международной конференции по архитектурной поддержке языков программирования и операционных систем . стр. 79–92. дои : 10.1145/3297858.3304008 . ISBN 978-1-4503-6240-5 .
- ^ Генечко, Матеуш; Мурлак, Филип; Пейперман, Чарльз (февраль 2024 г.). «Поддержка потомков в JSONPath с SIMD-ускорением». Конференция по архитектурной поддержке языков программирования и операционных систем . 4 .
- ^ Брахмиа, Зухайер; Гранди, Фабио; Брахмия, Сафа; Буазиз, Рафик (2023). «τJSONPath: временное расширение языка JSONPath для платформы τJSchema». Искусственный интеллект и умная среда . Конспекты лекций по сетям и системам. Том. 635. стр. 844–853. дои : 10.1007/978-3-031-26254-8_123 . ISBN 978-3-031-26253-1 .
- ^ Сарьервинни, Джеймс. «JMESPath» . Архивировано из оригинала 14 марта 2024 года . Проверено 23 марта 2024 г.
- ^ Бэйли, Мэтт. "JSONata" . Архивировано из оригинала 25 марта 2024 года . Проверено 25 марта 2024 г.
- ^ Брайан, Пол; Зип, Крис; Ноттингем, Марк (апрель 2013 г.). «Указатель нотации объектов JavaScript (JSON) RFC 6901» . Серия RFC . Рабочая группа по проектированию Интернета (IETF) . Проверено 23 марта 2024 г.
- ^ «JSONiq» . Архивировано из оригинала 13 января 2024 года . Проверено 23 марта 2024 г.
- ^ Роби, Джонатан; Дайк, Майкл; Шпигель, Джош. «Язык путей XML (XPath) 3.1» . w3c.org . Архивировано из оригинала 18 января 2024 года . Проверено 24 марта 2024 г.
- ^ Тови-Уолш, Норман; Снельсон, Джон; Коулман, Эндрю. «Модель данных XQuery и XPath» . w3c.org . Архивировано из оригинала 18 января 2024 года . Проверено 24 марта 2024 г.