无效的JSON双引号错误。如果我已经有了双引号,如何更正语法?

无效的JSON双引号错误。如果我已经有了双引号,如何更正语法?,json,amazon-web-services,boto3,Json,Amazon Web Services,Boto3,我有一个用JSON读取这一特定部分的脚本。 有关章节为: def amifunc2(instance_id): client = boto3.client('ssm', region_name = 'us-east-1') ec2_response = client.send_command( InstanceIds=[ instance_id ], DocumentName='

我有一个用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格式。我的语法有什么问题?

这可以通过使用单引号(
)和双引号(
)的组合来实现,这允许按预期回显值,因此参数将被包装在
\'“{”用户名“:[“\'$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',

再看一遍。代码在中使用了循环
for i,然后接收管理员用户列表,并将其放入
--参数“{\”“username\\:[“\”“$i\”“]}”
部分。这些引号由shell解释。将arg用单引号括起来。这不够吗?
“{\”“username\\:[\“$i\”“]”“
是的,应该可以,而且
--参数“{\”username\”:[\“$i\”]}”
是一个稍微不复杂的版本。与SSM本身相关的某些内容可能是由于某些原因导致SSM不起作用,我应该检查SSM什么?