我正在尝试创建一个PSCustomObject,稍后将其通过ConvertTo-JSON
进行管道传输,但是我似乎无法正确地获得PSCustomObject的格式。问题似乎在于,我希望对所得的JSON进行格式化的方式包括锯齿状的数组,但是正确的Powershell语法使我难以理解。
这就是我拥有的
$RetrievalParamsBodyObj = [PSCustomObject]@{
things = @(@{
field="date_created"
operator="within"
value="7"
})
}
当我通过ConvertTo-JSON
传递它时,它看起来像这样:
$RetrievalParamsBodyObj | ConvertTo-JSON
{
"things": [
{
"field": "date_created",
"operator": "within",
"value": "7"
}
]
}
但是我希望它看起来像这样:
{
"things": [
[{
"field": "date_created",
"operator": "within last",
"value": "7"
}]
]
}
我尝试在哈希表周围包装一个附加数组,但这似乎没有任何效果。
答案 0 :(得分:3)
两种技巧:1)在内部数组前面加一个逗号,以便Powershell知道它是一个嵌套数组而不是串联数组,以及2)确保设置深度:
[PSCustomObject]@{
things = @(,@(@{
field="date_created"
operator="within"
value="7"
}))
} | ConvertTo-Json -Depth 5
输出:
{
"things": [
[
{
"field": "date_created",
"operator": "within",
"value": "7"
}
]
]
}
...在语法上与您期望的输出相同。要使其格式不同,您需要创建一个自定义JSON序列化程序。