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

如何通过AWS CLI获取无嵌套数组的标准JSON格式结果

问题

在Linux环境下执行这条AWS CLI命令:

aws ec2 describe-subnets --subnet-ids "XXX" --query "Subnets[*].Tags" --output json

得到双层嵌套结构的JSON结果:

[
  [
    {
      "Key": "k1",
      "Value": "v1"
    },
    {
      "Key": "k2",
      "Value": "v2"
    }
  ]
]

需要获取无双层嵌套的标准JSON格式,要么是单层标签对象数组,要么是键值对形式的对象。

解决办法

1. 直接修改AWS CLI的Query参数

因为你指定了单个子网ID,Subnets[*].Tags会把该子网的标签数组再包裹一层外层数组(对应所有匹配的子网集合)。直接定位到第一个子网的标签即可消除双层嵌套:

aws ec2 describe-subnets --subnet-ids "XXX" --query "Subnets[0].Tags" --output json

输出为单层标签数组:

[
  {
    "Key": "k1",
    "Value": "v1"
  },
  {
    "Key": "k2",
    "Value": "v2"
  }
]

如果想把标签转换成键值对形式的对象,用Query的from_entries语法:

aws ec2 describe-subnets --subnet-ids "XXX" --query "Subnets[0].Tags | from_entries" --output json

输出结果:

{
  "k1": "v1",
  "k2": "v2"
}

2. 用jq工具处理原命令输出

如果不想修改原AWS命令,可通过jq工具过滤双层数组:

  • 提取内层数组(单个子网场景):
aws ec2 describe-subnets --subnet-ids "XXX" --query "Subnets[*].Tags" --output json | jq '.[0]'
  • 若查询多个子网,需合并所有标签数组为一个:
aws ec2 describe-subnets --subnet-ids "XXX" --query "Subnets[*].Tags" --output json | jq 'flatten'
  • 转换为键值对对象:
aws ec2 describe-subnets --subnet-ids "XXX" --query "Subnets[*].Tags" --output json | jq '.[0] | from_entries'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:52:49