问题描述
我正在尝试通过Powershell中的函数传递参数,但是它不起作用
function test($test1,$test2)
{
$details = @"
{ "updateDetails": [
{
"customer": "John","rank": $test1
},{
"school": "western","address": $test2
}
]
}
"@
return $details
}
test 0 florida
当前问题
{ "updateDetails": [
{
"customer": "John","rank":
},"address": florida
}
]
}
我尝试运行测试,但细节json中未填充值0,佛罗里达州已正确填充。如何替换两个值。还有佛罗里达怎么能成串
解决方法
您的代码完全正确。我运行了您的示例,它按预期运行。也许您错过了更新功能。关闭外壳,然后再试一次。
要将"florida"
作为字符串包含在内,您可以简单地在变量"$test2"
周围加上引号,甚至更安全:使用ConvertTo-Json输出正确引用和转义的JSON字符串:
function test {
param ([int]$rank,[string]$address)
return @"
{ "updateDetails": [
{
"customer": "John","rank": $rank
},{
"school": "western","address": $(ConvertTo-Json $address)
}
]
}
"@
}
test 0 florida
,
0为我填写,但佛罗里达州没有引号,这是无效的JSON。 为了使生活更轻松,请构建一个对象字符串,然后考虑使用内置cmdlet ConvertTo-Json将其转换为JSON。
在此示例中,我将向您展示如何使用哈希表
function test($test1,$test2)
{
$details = @{
"updateDetails"=
@(
@{
"customer" = "John"
"rank" = $test1
},@{
"school" = "western"
"address" = $test2
}
)
}
return $details | ConvertTo-Json
}
test 0 florida
输出
{
"updateDetails": [
{
"customer": "John","rank": 0
},{
"school": "western","address": "florida"
}
]
}