Bál*_*ász 0 arrays string powershell casting
我正在尝试将数据打包到对象中,然后再显示它们ConvertTo-Json.下面的测试用例完美展示了我如何处理数据以及出现了什么问题:
$array = @("a","b","c")
$data = @{"sub" = @{"sub-sub" = $array}}
$output = @{"root" = $data}
ConvertTo-Json -InputObject $data
ConvertTo-Json -InputObject $output
Run Code Online (Sandbox Code Playgroud)
输出(为清晰起见,手动格式化):
{ "sub": { "sub-sub": [ "a", "b", "c" ] }}
{ "root": { "sub": { "sub-sub": "a b c" } }}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法来分配$data给$output没有这个怪异的隐式转换?
正如评论中所提到的,通过将超出该深度的任何对象转换为字符串,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"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)