针对另一个表达式的JSONPath或JMESPath过滤

问题描述 投票:0回答:1

我正在努力寻找一种方法来根据另一个表达式而不是字符串或数字来过滤节点。我查看了JSONPathJMESPath的规格,并找到了一些有关无法按照我一直尝试的方式进行操作的信息。

JSONPath

使用JSONPath时,方括号对由先前路径片段寻址的对象或数组进行操作。索引始终以0] >>”开头

我已经找到了具有@parent属性的JSONPath plus,但它似乎只能直接移到直接父级,因此我需要从根目录访问(或按梯形图进行操作)

JMESPath

规格似乎表明过滤器应为expression compare expression,但我无法使其正常工作。有一个半相关的issue和一个关于current_node的注释,尽管我不清楚。

我试图实现这一目标的最后一天:

数据

{ 
  level: 20,
  items: [{
    qty: 20,
    id: '123'
  }, {
    qty: 30,
    id: '234'
 }]
}

表达式:

$.items[?(@.qty==$.level)]

期望

qty匹配level的方式获取所有项目。

关于实现此目标的建议?我正在为自己扩展JSONPath实现,因为这似乎是唯一的方法。我不太了解我刚刚发现的JMESPath,所以也许实际上有一种方法可以做到这一点。

我正在努力寻找一种方法来根据另一个表达式而不是字符串或数字来过滤节点。我查看了JSONPath和JMESPath的规范,并在...

jsonpath jmespath
1个回答
0
投票

[C0的出色作者,马上添加了@root功能。

© www.soinside.com 2019 - 2024. All rights reserved.