gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:23:51 25 4
gpt4 key购买 nike

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

JSON路径

“使用 JSONPath 方括号对上一个路径片段寻址的对象或数组进行操作。索引始终从 0 开始”

我发现 JSONPath plus 有一个 @parent 属性,但它似乎只上升到直接父级,我需要从根访问(或向上工作)

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 plus 的出色作者立即添加了@root 功能。

所以现在:

$.items[?(@.qty==@root.level)] // Could use @parent.level for shallow stuff too

关于javascript - 针对另一个表达式的 JSONPath 或 JMESPath 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com