Я изо всех сил пытаюсь найти способ фильтровать узлы по другому выражению, а не по строке или числу. Я посмотрел спецификации для JSONPath и JMESPath и нашел немного информации о невозможности сделать это так, как я пытался.
JSONPath
" С помощью JSONPath квадратные скобки работают с объектом или массивом, адресуемым предыдущим фрагментом пути. Индексы всегда начинаются с 0 "
Я нашел JSONPathплюс, который имеет свойство @parent, но, похоже, подходит только к непосредственному родителю, и мне нужен доступ от root (или работа по лестнице)
JMESPath
Кажется, спецификации указывают, что фильтр должен быть expression compare expression
, но я не могу заставить его работать. Существует неполная проблема и примечание по current_node , хотя мне это немного неясно.
Конец дня, когда я пытаюсь добиться этого:
Данные
{
level: 20,
items: [{
qty: 20,
id: '123'
}, {
qty: 30,
id: '234'
}]
}
Выражение:
$.items[?(@.qty==$.level)]
Ожидания
Чтобы получить все предметы с qty
, который соответствует level
.
Предложения для достижения этой цели? Я смотрю на расширение реализации JSONPath для себя, так как это кажется единственным способом. Я не настолько разбираюсь в JMESPath, который я только что обнаружил, так что, возможно, на самом деле есть способ сделать это.