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

如何用JSONPath表达式按key值过滤数组并保留对象结构?

用JSONPath过滤数组并返回完整匹配对象

问题说明

给定JSON数组:

[
   {
      "s3_uri":"s3://fake-s3-bucket/fact_table/fact_table.csv",
      "dataset":"fact_table"
   },
   {
      "s3_uri":"s3://fake-s3-bucket/dimension_table/dimension_table.csv",
      "dataset":"dimension_table"
   }
]

需要筛选出dataset值为dimension_table的完整对象,期望结果:

[
   {
      "s3_uri":"s3://fake-s3-bucket/dimension_table/dimension_table.csv",
      "dataset":"dimension_table"
   }
]

此前使用表达式$[*][?(@.dataset==dimension table)]仅返回属性值,无法保留对象结构:

[
  "s3://fake-s3-bucket/dimension_table/dimension_table.csv",
  "dimension_table"
]

解决方案

可以实现,正确的JSONPath表达式为:

$[?(@.dataset == 'dimension_table')]

错误原因解析

之前的表达式存在两个问题:

  • 多余的[*]:$[*]会遍历数组内每个对象,后续的[?(...)]会变成遍历对象的所有属性并筛选属性值,而非筛选整个对象。
  • 字符串未加引号:dimension_table是字符串常量,必须用单/双引号包裹,否则会被当作变量解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:35:15