Json jq-如何创建包含双引号包围字段值的输出 出身背景

Json jq-如何创建包含双引号包围字段值的输出 出身背景,json,jq,Json,Jq,下面的命令生成一个JSON流 aws cloudformation describe-stacks --stack-name ${stack} --region us-east-1 |\ jq --arg STACK ${stack} '.Stacks[] | select(.StackName=="mlai-metadata-development-backend") | .Outputs[] | select(.ExportName != null) 我喜欢创建一个JSON字典,比如{s

下面的命令生成一个JSON流

aws cloudformation describe-stacks --stack-name ${stack} --region us-east-1 |\
jq --arg STACK ${stack} '.Stacks[] | select(.StackName=="mlai-metadata-development-backend") | .Outputs[] | select(.ExportName != null) 
我喜欢创建一个JSON字典,比如{stack vpc cidr:172.31.0.0/16}

运行此:

aws cloudformation describe-stacks --stack-name ${stack} --region us-east-1 |\
jq --arg STACK ${stack} '.Stacks[] | select(.StackName=="mlai-metadata-development-backend") | .Outputs[] | select(.ExportName != null) | "\(.ExportName):\(.OutputValue)"'
创造

"stack-vpc-id:vpc-d4520cb1"
"stack-vpc-cidr:172.31.0.0/16"
问题 如何使用jq将它们转换为JSON字典的行

使现代化 多亏了这些答案,我做对了

aws cloudformation describe-stacks --stack-name ${stack} --region ${AWS_DEFAULT_REGION} |\
jq --arg stack ${stack} \
  '[.Stacks[] | select(.StackName==$stack) | .Outputs[] |
  select(.ExportName != null) | { (.ExportName) : (.OutputValue) }] |
  add' |\
tee "${stack}".json
结果:

{
  "apigw-rest-api-conntent-metadata-url": "https://****.execute-api.us-east-1.amazonaws.com/development/",
  "apigw-rest-api-conntent-metadata-stage-name": "development",
  "stack-availability-zones": "us-east-1a,us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f",
  "apigw-rest-api-conntent-metadata-deployment-id": "***0tk",
  "stack-vpc-id": "vpc-d4520cb1",
  "stack-vpc-cidr": "172.31.0.0/16"
}

对于您在最后一跳时遇到的直接问题,您可以在jq中执行下面的操作

但是,您可以通过拼写出明确的k/v名称来执行以下操作

{ (.ExportName) : (.OutputValue) }

对于您在最后一跳时遇到的直接问题,您可以在jq中执行下面的操作

但是,您可以通过拼写出明确的k/v名称来执行以下操作

{ (.ExportName) : (.OutputValue) }
我[想]创建一个JSON字典

要从流创建单个词典,请执行以下操作:

jq -n 'reduce inputs as $i (null;
  . + ($i|{ (.ExportName) : (.OutputValue) }))'
或者您可以修改jq调用,使用类似的代码段,如下所示:

[ .Stacks[] .... 
 | { (.ExportName) : (.OutputValue) } ]
| add
我[想]创建一个JSON字典

要从流创建单个词典,请执行以下操作:

jq -n 'reduce inputs as $i (null;
  . + ($i|{ (.ExportName) : (.OutputValue) }))'
或者您可以修改jq调用,使用类似的代码段,如下所示:

[ .Stacks[] .... 
 | { (.ExportName) : (.OutputValue) } ]
| add