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

如何用JSONata查询匹配条件的同级label属性

解决JSONata查询获取指定label的问题

给定JSON结构

[
    {
        "id": "0oa3nfof0kFRol89o1d7",
        "name": "saasure",
        "label": "Console",
        "status": "ACTIVE",
        "lastUpdated": "2022-06-20T19:34:29.000Z",
        "created": "2022-05-10T22:24:40.000Z",
        "accessibility": {
            "selfService": false,
            "errorRedirectUrl": null,
            "loginRedirectUrl": null
        },
        "visibility": {
            "autoSubmitToolbar": false,
            "hide": [
                "firstName",
                "lastName"
            ],
            "appLinks": {
                "admin": true
            }
        }
    },
    {
        "id": "0oa3nfof2kbmp9TVH1d7",
        "name": "enduser",
        "label": "Dashboard",
        "status": "ACTIVE",
        "lastUpdated": "2022-06-20T19:34:29.000Z",
        "created": "2022-05-10T22:24:42.000Z",
        "accessibility": {
            "selfService": false,
            "errorRedirectUrl": null,
            "loginRedirectUrl": null
        },
        "visibility": {
            "autoSubmitToolbar": false,
            "hide": [
                "lastName"
            ],
            "appLinks": {}
        }
    }
]

需求

仅返回visibility.hide数组中包含"firstName"的对象的label属性。

正确的JSONata查询

需要先筛选顶层数组中符合条件的对象,再提取对应的label,而非先定位visibility节点再回溯父级。提供两种可行写法:

写法1(使用contains)

$[visibility.hide contains "firstName"].label

写法2(使用in)

$["firstName" in visibility.hide].label

之前查询的问题分析

你之前的查询visibility["firstName" in hide].{'label' : %.label}会返回所有label,原因是:

  1. 先遍历数组中所有对象的visibility节点,筛选出符合条件的visibility
  2. 对每个符合条件的visibility,用%获取其父级(顶层对象)的label,但遍历范围是所有visibility,回溯父级时逻辑覆盖了全部对象,最终返回了所有label。

正确思路是从顶层数组入手,直接筛选满足"firstName" in visibility.hide的对象,再提取它们的label,就能精准得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:17:26