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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了针对另一个表达式的JSONPath或JMESPath过滤相关的知识,希望对你有一定的参考价值。

我正在努力寻找一种方法来根据另一个表达式而不是字符串或数字来过滤节点。我查看了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的规范,并在...

答案

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

以上是关于针对另一个表达式的JSONPath或JMESPath过滤的主要内容,如果未能解决你的问题,请参考以下文章

JsonPath教程

JSONPath:包含过滤器

JsonPath学习笔记

JSONPath中的表达式

jsonpath的使用

JSONPath 表达式的使用