我需要与期望对象数组以及其他参数的 API 进行交互。例子:
{
"fields": {
"somefield": "somevalue",
"someobject": {
"name": "foobar"
},
"versions": [
{
"name": "1.0"
}
]
}
}
在这个答案的帮助下,我尝试了两种不同的处理方式。我将它们组合成一个代码示例:
$versionName = New-Object -TypeName PSObject
$versionName | Add-Member -Name "name" -MemberType NoteProperty -Value "1.0"
$versionName2 = @{}
$versionName2.name = "1.0"
$postIssueBody = @{}
$postIssueBody.fields = @{}
$postIssueBody.fields.somefield = "somevalue"
$postIssueBody.fields.someobject = @{}
$postIssueBody.fields.someobject.name = "foobar"
$postIssueBody.fields.version = @($versionName)
$postIssueBody.fields.version2 = @()
$postIssueBody.fields.version2 += [pscustomobject]$versionName2
$postIssueRequestJson = $postIssueBody | ConvertTo-Json
$postIssueRequestJson
这将产生以下输出:
{
"fields": {
"somefield": "somevalue",
"someobject": {
"name": "foobar"
},
"version": [
"@{name=1.0}"
],
"version2": [
"@{name=1.0}"
]
}
}
如您所见,这不会像有效的 JSON 那样有效。处理此分配的最佳方法是什么,以便在通过后正确形成版本名称ConvertTo-Json
?