【发布时间】:2019-10-30 00:11:32
【问题描述】:
观察:
C:\> [array]@(1,2) | ConvertTo-Json
[
1,
2
]
C:\> [array]@(1) | ConvertTo-Json
1
C:\> [array]@() | ConvertTo-Json
C:\>
(我预计最后两个案例分别是 [1] 和 [])
那么,如果我想使用标准的ConvertTo-Json 方法,我该如何可靠地做到这一点,即使数组包含 1 个或 0 个元素?
请注意,当数组是转换为 json 的复杂对象的一部分时,对结果进行后处理是不可行的。
编辑 1
C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.17763.592
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.592
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
C:\> [array]@(1) | ConvertTo-Json -AsArray
ConvertTo-Json : A parameter cannot be found that matches parameter name 'AsArray'.
At line:1 char:30
+ [array]@(1) | ConvertTo-Json -AsArray
+ ~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [ConvertTo-Json], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ConvertToJsonCommand
C:\>
【问题讨论】:
-
使用
-AsArray开关。 -
好指针,@AdminOfThings,但值得指出的是,
-AsArray仅在 PowerShell Core 中受支持;另请注意,对于空数组,它不会像预期的那样工作:例如,ConvertTo-Json -AsArray @() -Compress产生[[]]。
标签: json powershell