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

如何使用JMESPATH查询匹配指定物品的用户姓名信息?

JMESPATH 筛选拥有指定物品的用户信息

原始数据

{
  "Record": [
    {
      "FirstName": "John",
      "LastName": "Smith",
      "City": "Chicago",
      "Possessions": [
        { "Item": "TV" },
        { "Item": "XBOX-S" },
        { "Item": "DVR" },
        { "Item": "Setup Box" }
      ]
    },
    {
      "FirstName": "Jane",
      "LastName": "Doe",
      "City": "Seattle",
      "Possessions": [
        { "Item": "DVR" },
        { "Item": "PS5" },
        { "Item": "FireStick" }
      ]
    },
    {
      "FirstName": "Jane",
      "LastName": "Lee",
      "City": "Dallas",
      "Possessions": [
        { "Item": "TV" },
        { "Item": "PS5" },
        { "Item": "FireStick" }
      ]
    }
  ]
}

需求说明

筛选出拥有物品TV的用户,仅获取其FirstName和LastName字段,此前尝试的Record[?contains(Possessions[].Item, TV) == true]语句无法生效。

正确查询语句及结果

1. 返回数组形式的字段值

Record[?Possessions[?Item == 'TV']].[FirstName, LastName]

结果:

[
  ["John", "Smith"],
  ["Jane", "Lee"]
]

2. 返回键值对形式的结果(更易读)

Record[?Possessions[?Item == 'TV']].{FirstName: FirstName, LastName: LastName}

结果:

[
  {
    "FirstName": "John",
    "LastName": "Smith"
  },
  {
    "FirstName": "Jane",
    "LastName": "Lee"
  }
]

原语句失效原因

原语句中contains(Possessions[].Item, 'TV')的问题在于:Possessions[].Item会生成一个数组(比如["TV", "XBOX-S", ...]),而JMESPATH的contains函数仅支持检查字符串是否包含子串,不支持检查数组是否包含元素,因此该表达式无法正确匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:51:17