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

如何用JMESPath查询获取SniEnabled过滤后的扁平化CSV格式输出

使用JMESPath过滤JSON并生成扁平化CSV格式输出

需求描述

从给定JSON数据中过滤所有sslState为SniEnabled的条目,生成如下扁平化CSV格式输出(字段以空格分隔):

FirstWebApp exmple11.com SniEnabled
SecondWebApp xyz.com SniEnabled
SecondWebApp xyz2.com SniEnabled

输入JSON数据:

[
    {
        "hostNameSslStates": [
            {
                "name": "exmple11.com",
                "sslState": "SniEnabled"
            },
            {
                "name": "example22.com",
                "sslState": "Disabled"
            },
            {
                "name": "example23",
                "sslState": "Disabled"
            }
        ],
        "name": "FirstWebApp"
    },
    {
        "hostNameSslStates": [
            {
                "name": "xyz.com",
                "sslState": "SniEnabled"
            },
            {
                "name": "xyz2.com",
                "sslState": "SniEnabled"
            },
            {
                "name": "zyx23.com",
                "sslState": "Disabled"
            }
        ],
        "name": "SecondWebApp"
    }
]

解决方案

1. JMESPath查询表达式

使用以下JMESPath语句完成筛选与扁平化:

[] | [].{appName: name, sslEntries: hostNameSslStates[?sslState=='SniEnabled']} | [].sslEntries[] | [ [@.parent.appName, @.name, @.sslState] ] | [] | join(' ', @)

2. 执行命令(以jmespath-cli为例)

将JSON数据保存为input.json,执行以下命令:

cat input.json | jp "[] | [].{appName: name, sslEntries: hostNameSslStates[?sslState=='SniEnabled']} | [].sslEntries[] | [ [@.parent.appName, @.name, @.sslState] ] | [] | join(' ', @)"

3. 输出结果

执行后将得到符合要求的输出:

FirstWebApp exmple11.com SniEnabled
SecondWebApp xyz.com SniEnabled
SecondWebApp xyz2.com SniEnabled

表达式说明

  • []:展开顶层数组
  • [].{appName: name, sslEntries: hostNameSslStates[?sslState=='SniEnabled']}:为每个应用构造包含应用名和筛选后SSL条目的对象
  • [].sslEntries[]:展开每个应用下的目标SSL条目,保留父级应用名
  • [ [@.parent.appName, @.name, @.sslState] ]:将每个条目对应的三个字段组合为数组
  • []:展开所有字段数组
  • join(' ', @):将每个字段数组用空格连接为字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:17:17