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

使用JSONPath无法获取嵌套数组中location为USA的datapoints id

问题分析与解决

导致无匹配结果的核心原因

  1. JSON数据拼写错误:
    你提供的JSON中,第一个datapoint的location值是"UAS"而非目标的"USA",这直接导致没有符合条件的数据。

  2. JSONPath表达式逻辑错误:
    原表达式$.datapoints[?(@.featureValues.name[0].company[*].location == 'USA')].id存在逻辑问题:company[*].location会返回一个数组(比如["USA"]),将数组与字符串"USA"直接用==比较,在多数JSONPath实现中会返回false,因此过滤条件不生效。

修正方案

步骤1:修正JSON数据

将第一个datapoint中的"location": "UAS"修改为"location": "USA",修正后该条目符合匹配条件。

步骤2:使用正确的JSONPath表达式

推荐两种可行的表达式:

  • 方式一:通过嵌套过滤检查company数组内的元素

    $.datapoints[?(@.featureValues.name[0].company[?(@.location == 'USA')])].id
    

    该表达式会检查company数组中是否存在location等于"USA"的元素,若存在则匹配对应的datapoint。

  • 方式二:使用in操作符判断值是否在数组中

    $.datapoints[?('USA' in @.featureValues.name[0].company[*].location)].id
    

    该表达式直接判断"USA"是否存在于company[*].location返回的数组中,逻辑更直观。

测试验证

修正后,上述表达式均可匹配到id为default.1的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:32:31