我正在使用Powershell探索REST API。我发现了一个奇怪的异常。当我序列化/描述以下对象时,responses
对象消失了!我已经验证了将其转换为.net对象时一切仍然完好无损,因此从.net对象转换为JSON时会发生问题。
$json = @'
{
"stubs": [
{
"responses": [
{
"is": {
"body": "54"
}
},
{
"is": {
"body": "21"
}
},
{
"is": {
"body": "0"
}
}
]
}
]
}
'@
$json | ConvertFrom-Json | ConvertTo-Json
上述转换的结果是:
{
"stubs": [
{
"responses": " "
}
]
}
如果运行此命令,则会收到 54 ,如预期的那样:
$json | ConvertFrom-Json | %{ $_.stubs.responses[0].is.body }
我正在Ubuntu上运行,但是不要相信这会有所作为。对于Windows上的某人来说,这应该很容易验证。
答案 0 :(得分:6)
ConvertTo-Json
带有一个可选的Depth
参数(无论出于何种原因)默认为2。该参数本身在链接文档中的描述如下:
指定JSON表示形式中包含多少级所包含的对象。默认值为2。
如果您为此参数提供更高的值,它将起作用-最大值值为100:
$json | ConvertFrom-Json | ConvertTo-Json -Depth 100