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

JSON Path表达式嵌套使用报错,求获取指定书籍作者名的正确语法

问题排查与解决方案

你的JSONPath表达式报错的核心原因有两个:

  1. 多数JSONPath实现不支持在过滤谓词([?()]内部)嵌套完整的JSONPath查询,尤其是这种返回数组的子查询;
  2. $.books[?(@.name == "The Hitchhiker's Guide to the Galaxy")].author_id返回的是一个数组(即使只有一个元素,结果也是[1]),直接用数组和单个数值@.id做==比较逻辑不成立。

正确的JSONPath表达式(适配Jayway等主流实现)

如果你使用的是Jayway JSONPath(多数在线工具使用的实现),可以通过明确取数组第一个元素的方式修正:

$.authors[?(@.id == $.books[?(@.name == "The Hitchhiker's Guide to the Galaxy")].author_id[0])].name

或者用更简洁的递归匹配写法:

$.authors[?(@.id == $..books[?(@.name == "The Hitchhiker's Guide to the Galaxy")].author_id[0])].name

兼容更多实现的分步解法

如果你的JSONPath引擎不支持嵌套查询,可以分两步操作:

  1. 先提取目标书籍的作者ID:
    $.books[?(@.name == "The Hitchhiker's Guide to the Galaxy")].author_id
    
    得到结果1;
  2. 再用该ID匹配作者:
    $.authors[?(@.id == 1)].name
    

以上两种方式都能准确获取到Douglas Adams这个结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:24:12