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

如何用JSONPath判断序列号HD1300的Connection值400是否存在

解决JSONPath定位特定电视条目问题

我来帮你搞定这个JSONPath查询的问题!首先先纠正下你提供的JSON数据里的语法小错误——原数据里tvs的结构多了一层冗余的大括号,正确的简化版结构应该是这样的:

{
  "tvs": {
    "tv": [
      {
        "serial": "HD1300",
        "data": [
          { "title": "manufacturer", "value": "lg" },
          { "title": "color", "value": "silver" },
          { "title": "inches", "value": 32 },
          { "title": "connection", "value": 220 },
          { "title": "connection", "value": 400 }
        ]
      }
      // 更多电视条目
    ]
  }
}

接下来分析你之前尝试的表达式问题:

  • 序列号写错且大小写不匹配:你要找的是HD1300,但表达式里写的是hd1340,JSON是大小写敏感的,这会直接导致匹配失败
  • 路径结构有误:tv是tvs对象下的数组,正确的路径应该是$.tvs.tv而不是$.tvs.[...]

正确的JSONPath查询表达式

如果你想直接获取符合条件的connection条目,或者判断它是否存在,可以用这个表达式:

$.tvs.tv[?(@.serial=='HD1300')].data[?(@.title=='connection' && @.value==400)]

表达式拆解:

  • $.tvs.tv:定位到包含所有电视条目的数组
  • [?(@.serial=='HD1300')]:过滤出序列号严格等于HD1300的电视条目(注意大小写完全匹配)
  • .data:进入该电视的属性数据数组
  • [?(@.title=='connection' && @.value==400)]:进一步过滤出title为connection且value等于400的条目

如果执行这个表达式后返回非空结果,就说明序列号HD1300的电视里存在connection值为400的条目。

另外,如果你使用的JSONPath支持递归查询,也可以用这个简化版(效果完全一致):

$..tv[?(@.serial=='HD1300')].data[?(@.title=='connection' && @.value==400)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:06:59