gpt4 book ai didi

json - 将带空格的参数传递到 AWS cli

转载 作者:行者123 更新时间:2023-12-02 23:18:33 25 4
gpt4 key购买 nike

我正在尝试将带空格的参数传递给 aws cloudformation create-stack aws cli。

问题是我的参数有空间。我正在使用 powershell 编写脚本。

下面是我的参数示例

 $JsonParameter = '[{"ParameterKey":"name","ParameterValue":"John"},{"ParameterKey":"Occupation","ParameterValue":"Test Engineer"}]'| ConvertTo-Json

这返回
"[{\"ParameterKey\":\"name\",\"ParameterValue\":\"John\"},{\"ParameterKey\":\"Occupation\",\"ParameterValue\":\"Test Engineer\"}]"

cli命令是
aws cloudformation create-stack --stack-name $stackName --template-url $templateUrl --capabilities $capabilityList --parameters $JsonParameter --region "us-east-1"

错误发生了
Error parsing parameter '--parameters': Invalid JSON:
[{"ParameterKey":"name","ParameterValue":"John"},{"ParameterKey":"Occupation","ParameterValue":"Test

从错误来看,cli 不喜欢 ParameterValue 中的空格。
如何转义空间,以便 cli 不会提示值中的空间?

最佳答案

删除 | ConvertTo-Json .

您的字符串已经是 json 字符串,因此您不想执行转换。

$JsonParameter = '[{"ParameterKey":"name","ParameterValue":"John"},{"ParameterKey":"Occupation","ParameterValue":"Test Engineer"}]'

只需按原样使用字符串。

替代方案

如果您使用的是 Powershell 对象而不是 json 字符串,您可能希望在某些时候将其转换为 json 以将其作为参数传递给您的 aws 调用。

那是 ConvertTo-Json 的时刻会显示自己是有用的。

以此为例
$JsonParameter = @(
@{
ParameterKey = 'name'
ParameterValue = 'John'
},
@{
ParameterKey = 'Occupation'
ParameterValue = 'Test Engineer'
}
)


这是一个 Powershell 对象,您可能在不同的上下文中从头开始构建该对象,目的是将其作为 json 参数传递给您的 aws 调用。

现在,要实现从“哈希表数组”状态到有效 json 字符串的转换,您需要使用 ConvertTo-Json cmdlet。
$JsonParameterString = $JsonParameter | Convertto-json -Compress

生成的字符串与您最初的相同,准备传递给 aws :
[{"ParameterKey":"name","ParameterValue":"John"},{"ParameterKey":"Occupation","ParameterValue":"Test Engineer"}]

另一方面,如果您有一个 json 字符串并且需要毫不费力地编辑它,您可以使用 ConvertFrom-Json cmdlet,然后根据需要编辑生成的对象,并在传递之前再次将其转换回 json。

附加说明

在我的 Powershell to Json 示例中,
我用了 -compress开关参数。这是可选的。这将创建一个压缩的 json 字符串(一行)而不是扩展的。

引用

Powershell doc - ConvertTo-Json

关于json - 将带空格的参数传递到 AWS cli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com