| Выражение |
Описание |
Пример |
Результат |
$ |
Корневой элемент |
$ |
Весь JSON |
$.store.book |
Дочерний элемент |
$.users[0].name |
Первое имя |
$[0] |
Первый элемент массива |
$.items[0] |
Первый item |
$[-1] |
Последний элемент |
$.items[-1] |
Последний item |
$[0:3] |
Срез (первые 3) |
$.items[0:3] |
3 элемента |
$[*] |
Все элементы |
$.users[*].email |
Все email |
$..author |
Рекурсивный поиск |
$..price |
Все price |
$.store.* |
Все дочерние |
$.user.* |
Все свойства user |
$.books[0] // Первая книга
$.books[-1] // Последняя книга
$.books[0:3] // Первые 3 книги (индексы 0, 1, 2)
$.books[1:5] // Со второй по пятую
$.books[::2] // Каждая вторая книга
$.books[::-1] // В обратном порядке
$.books[2:] // С третьей до конца
$.books[:3] // С начала до третьей (не включая)
$..author // Все 'author' в любом месте
$..book[*].author // Все авторы из массива books
$..price // Все цены
$..book..price // Все цены внутри book
| Оператор |
Описание |
Пример |
== |
Равно |
$.books[?(@.price == 10)] |
!= |
Не равно |
$.books[?(@.category != 'fiction')] |
< |
Меньше |
$.books[?(@.price < 20)] |
<= |
Меньше или равно |
$.books[?(@.year <= 2000)] |
> |
Больше |
$.books[?(@.price > 15)] |
>= |
Больше или равно |
$.books[?(@.year >= 1980)] |
// AND
$.books[?(@.price < 10 && @.inStock == true)]
// OR
$.books[?(@.category == 'fiction' || @.category == 'science')]
// NOT
$.books[?(!(@.price > 20))]
// Есть поле price
$.books[?(@.price)]
// Нет поля discount
$.books[?(!@.discount)]
// Содержит "Tolkien"
$.books[?(@.author =~ /Tolkien/)]
// Начинается с "The" (case-insensitive)
$.books[?(@.title =~ /^The/i)]
// Содержит цифры
$.products[?(@.sku =~ /[0-9]+/)]
| Функция |
Описание |
Синтаксис |
length() |
Количество элементов |
$.users.length() |
min() |
Минимальное значение |
$.min($.products[*].price) |
max() |
Максимальное значение |
$.max($.products[*].price) |
avg() |
Среднее значение |
$.avg($.orders[*].total) |
sum() |
Сумма значений |
$.sum($.items[*].quantity) |
Важно: Синтаксис функций min(), max(), avg(), sum() - зависит от используемых инструментов.
На текущий момент для нашей работы функция идет В НАЧАЛЕ, а не в конце!
// Минимальная цена
$.min($.store.books[*].price)
// Максимальная цена
$.max($.store.books[*].price)
// Средняя цена
$.avg($.store.books[*].price)
// Общая стоимость
$.sum($.store.books[*].price)
// Количество книг
$.store.books.length()
// Книги fiction дешевле $20
$.books[?(@.category == 'fiction' && @.price < 20)]
// Email всех активных пользователей
$.users[?(@.isActive == true)].email
// Названия товаров в наличии дороже $50
$.products[?(@.inStock == true && @.price > 50)].name
// Заказы со статусом 'shipped' за последний месяц
$.orders[?(@.status == 'shipped' && @.date > '2025-11-01')]
// Пользователи с рейтингом выше 4.5 и более 10 отзывов
$.users[?(@.rating > 4.5 && @.reviewCount > 10)]
{
"status": "success",
"data": {
"users": [
{
"id": 1,
"name": "Alice",
"email": "alice@test.com",
"role": "admin",
"isActive": true
},
{
"id": 2,
"name": "Bob",
"email": "bob@test.com",
"role": "user",
"isActive": true
},
{
"id": 3,
"name": "Charlie",
"email": "charlie@test.com",
"role": "user",
"isActive": false
}
]
}
}
// Проверить статус ответа
$.status
→ "success"
// Посчитать количество пользователей
$.data.users.length()
→ 3
// Проверить, что есть admin
$.data.users[?(@.role == 'admin')]
→ Alice
// Получить email всех активных пользователей
$.data.users[?(@.isActive == true)].email
→ ["alice@test.com", "bob@test.com"]
// Найти пользователя по id
$.data.users[?(@.id == 1)].name
→ "Alice"
// Проверить, что все email содержат @
$.data.users[?(@.email =~ /@/)].length() == $.data.users.length()
→ true
// Количество активных пользователей
$.data.users[?(@.isActive == true)].length()
→ 2
{
"store": {
"books": [
{
"category": "fiction",
"title": "1984",
"author": "George Orwell",
"price": 15.99,
"isbn": "978-0451524935"
},
{
"category": "science",
"title": "A Brief History of Time",
"author": "Stephen Hawking",
"price": 18.50,
"isbn": "978-0553380163"
}
],
"bicycle": {
"color": "red",
"price": 199.99
}
}
}
// Все книги
$.store.books[*]
// Названия всех книг
$.store.books[*].title
// Книги дешевле $20
$.store.books[?(@.price < 20)]
// Авторы книг категории fiction
$.store.books[?(@.category == 'fiction')].author
// Все цены в магазине
$..price
// Самая дорогая вещь
$..price.max()
// Общая стоимость всех книг
$.store.books[*].price.sum()
// ISBN первой книги
$.store.books[0].isbn
// Последняя книга
$.store.books[-1]
{
"company": {
"departments": [
{
"name": "Engineering",
"employees": [
{"name": "Alice", "salary": 120000},
{"name": "Bob", "salary": 100000}
]
},
{
"name": "Sales",
"employees": [
{"name": "Charlie", "salary": 90000}
]
}
]
}
}
// Все департаменты
$.company.departments[*].name
→ ["Engineering", "Sales"]
// Все сотрудники
$.company.departments[*].employees[*].name
→ ["Alice", "Bob", "Charlie"]
// Все зарплаты
$..salary
→ [120000, 100000, 90000]
// Сотрудники Engineering
$.company.departments[?(@.name == 'Engineering')].employees[*].name
→ ["Alice", "Bob"]
// Сотрудники с зарплатой > 95000
$..employees[?(@.salary > 95000)].name
→ ["Alice", "Bob"]
// Средняя зарплата
$..salary.avg()
→ 103333.33