我正在尝试将数据打包到对象中,然后使用ConvertTo-Json
显示它们。下面的测试用例很好地展示了我如何处理数据以及出现了什么问题:
$array = @("a","b","c")
$data = @{"sub" = @{"sub-sub" = $array}}
$output = @{"root" = $data}
ConvertTo-Json -InputObject $data
ConvertTo-Json -InputObject $output
输出(为清晰起见,手工格式化):
{ "sub": { "sub-sub": [ "a", "b", "c" ] }}
{ "root": { "sub": { "sub-sub": "a b c" } }}
如果没有这种奇怪的隐式转换,有没有办法将$data
分配给$output
?
答案 0 :(得分:5)
正如评论中所提到的,ConvertTo-Json
将尝试将对象结构展平超出最大嵌套级别,或深度,通过转换它找到的任何对象超出那个深度到一个字符串。
默认深度为2,但您可以指定它应该更深入地使用Depth
参数:
PS C:\> @{root=@{level1=@{level2=@("level3-1","level3-2")}}}|ConvertTo-Json
{
"root": {
"level1": {
"level2": "level3-1 level3-2"
}
}
}
PS C:\> @{root=@{level1=@{level2=@("level3-1","level3-2")}}}|ConvertTo-Json -Depth 3
{
"root": {
"level1": {
"level2": [
"level3-1",
"level3-2"
]
}
}
}