我正在尝试创建一个 JSON 序列化数组。当该数组仅包含一个项目时,我得到一个字符串,而不是字符串数组(在 JSON 中)。
多个项目(按预期工作):
PS C:\> @("one", "two") | ConvertTo-JSON
[
"one",
"two"
]
单项数组(不像预期的那样):
PS C:\> @("one") | ConvertTo-JSON
"one"
我错过了什么吗?
我正在尝试创建一个 JSON 序列化数组。当该数组仅包含一个项目时,我得到一个字符串,而不是字符串数组(在 JSON 中)。
多个项目(按预期工作):
PS C:\> @("one", "two") | ConvertTo-JSON
[
"one",
"two"
]
单项数组(不像预期的那样):
PS C:\> @("one") | ConvertTo-JSON
"one"
我错过了什么吗?
尝试不使用管道:
PS C:\> ConvertTo-Json @('one', 'two')
[
"one",
"two"
]
PS C:\> ConvertTo-Json @('one')
[
"one"
]
我也遇到了这个问题,但这是因为我的结构太深,并且 ConvertTo-Json 将低于某个深度的所有内容都展平为字符串。
例如:
PS C:\> $MyObject = @{ "a" = @{ "b" = @{ "c" = @("d") } } }
PS C:\> ConvertTo-Json $MyObject
{
"a": {
"b": {
"c": "d"
}
}
}
要解决此问题,您可以将更大的值传递给 -Depth
PS C:\> ConvertTo-Json $MyObject -Depth 100
{
"a": {
"b": {
"c": [
"d"
]
}
}
}
我刚刚遇到了同样的问题并发现,您可以将一个附加-AsArray
到ConvertTo-Json
命令中。例子:
❯ @("one") | ConvertTo-Json -AsArray
[
"one"
]
❯ @("one", "two") | Convert-ToJson -AsArray
[
"one",
"two"
]
我在一个对象中的子数组中遇到了这个问题。数组中有一个对象,并且ConvertTo-Json
正在删除数组中的对象。
解决这个问题的两件事:
我必须将-Depth
参数设置为ConvertTo-Json
$output = $body | ConvertTo-Json -Depth 10
我必须在数组中创建对象作为哈希表,然后将其转换为对象
$myArray.Add([pscustomobject]@{prop1 = ""; prop2 = "" })
今天面临同样的问题。只是补充一下,如果你有这样的对象
@{ op="replace"; path="clientName"; value="foo"}
那么您必须将其指定为
ConvertTo-Json @( @{ op="replace"; path="clientName"; value="foo"} )
双 @s 有时会变得混乱。
将 a , 放在 @ 前面:
,@("one") | ConvertTo-Json
[
"one"
]