[英]Invalid JSON double quotes error. How can I correct my syntax if i already have double quotes?
我有一个脚本可以读取 JSON 中的这一特定部分。有问题的部分是:
def amifunc2(instance_id):
client = boto3.client('ssm', region_name = 'us-east-1')
ec2_response = client.send_command(
InstanceIds=[
instance_id
],
DocumentName='AWS-RunShellScript',
Parameters={
'commands': [
'#!/bin/bash',
---
'admin_users=( user.number.1 user.number.2 user.number.3 user.number.4 )',
'for i in ${admin_users[@]}; do aws ssm send-command --document-name "arn:aws:ssm:doc-name" --targets "Key=instanceids,Values=$instance_id" --parameters "{"\""username"\"":["\""$i"\""]}" --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region us-east-1 --query "Command.CommandId"; sleep 5; done',
我运行这个命令并得到:
Error parsing parameter '--parameters': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
JSON received: {username:[user.number.1]}
Error parsing parameter '--parameters': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
JSON received: {username:[user.number.2]}
Error parsing parameter '--parameters': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
JSON received: {username:[user.number.3]}
Error parsing parameter '--parameters': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
JSON received: {username:[user.number.4]}
第一部分的参数部分是有问题的。 我已经尝试了所有双引号组合,但 AWS 控制台将其报告为无效的 JSON 格式。 我的语法有什么问题?
这可以通过使用单引号 ( '
) 和双引号 ( "
) 的组合来完成,这样可以按预期回显值,因此参数将包含在\'"{"username":["\'$i\'"]}"\'
。
下面是一个工作片段。
def amifunc2(instance_id):
client = boto3.client('ssm', region_name = 'us-east-1')
ec2_response = client.send_command(
InstanceIds=[
instance_id
],
DocumentName='AWS-RunShellScript',
Parameters={
'commands': [
'#!/bin/bash',
---
'admin_users=( user.number.1 user.number.2 user.number.3 user.number.4 )',
'for i in ${admin_users[@]}; do aws ssm send-command --document-name "arn:aws:ssm:doc-name" --targets "Key=instanceids,Values=$instance_id" --parameters \'"{"username":["\'$i\'"]}"\' --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region us-east-1 --query "Command.CommandId"; sleep 5; done',
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.