Я изо всех сил пытаюсь найти способ отфильтровать узлы по другому выражению, а не по строке или числу. Я просмотрел спецификации как для JSONPath, так и для JMESPath и найдите небольшую информацию о невозможности сделать это так, как я пытался.
JSONPath
"С помощью квадратных скобок JSONPath оперируйте с объектом или массивом, адресованным предыдущим фрагментом пути. Индексы всегда начинаются с 0"
Я нашел JSONPath plus, у которого есть свойство @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, который я только что обнаружил, поэтому, возможно, действительно есть способ сделать это.