You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSONPath查找兄弟节点?求获取$0价格的所有location方法

解决JSONPath获取匹配条件的兄弟节点问题

你遇到的问题很典型——当你用$..price[?(@.lowest <= 0)]时,确实只会定位到符合条件的price节点本身,而不是它的兄弟节点location。要拿到目标location,我们需要先筛选出包含符合条件price的父对象,再从中提取location属性。

正确的JSONPath表达式

最直接且高效的写法是:

$[?(@.price.lowest <= 0)].location

表达式解释

  • $:根节点(这里指顶层的数组)
  • [?(@.price.lowest <= 0)]:过滤数组中满足price.lowest <= 0条件的元素(也就是每个完整的条目对象)
  • .location:从筛选后的每个对象中提取location属性

针对你的JSON示例验证

假设你的JSON完整结构是:

[
  {
    "fromDate": "2018-03-30",
    "images": [{ "type": "LARGE", "url": "" }],
    "price": { "currencySymbol": "$", "lowest": 0 },
    "toDate": "2018-04-07",
    "location": "Newyork, NY",
    "priceSuffix": "per night",
    "details": "2-Bedrooms"
  },
  {
    "fromDate": "2018-03-30",
    "images": [{ "type": "LARGE", "url": "" }],
    "price": { "currencySymbol": "$", "lowest": 100 },
    "toDate": "2018-04-07",
    "location": "Los Angeles, CA",
    "priceSuffix": "per night",
    "details": "1-Bedroom"
  }
]

使用上述表达式后,会返回结果:

["Newyork, NY"]

补充说明

如果你的JSON结构嵌套更深(比如条目在多层嵌套里),可以用$..[?(@.price.lowest <= 0)].location来递归查找所有层级中符合条件的对象并提取location,但如果是顶层数组的情况,直接用$[?(@.price.lowest <= 0)].location性能更好。

内容的提问来源于stack exchange,提问作者onyx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:37:52