【发布时间】:2016-04-10 07:13:29
【问题描述】:
我正在尝试将我的数据打包到对象中,然后再使用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?
【问题讨论】:
-
ConvertTo-Json -InputObject $output -Depth 3 -
谢谢! ...虽然 -Depth 1 为“sub-sub”提供 System.Collections.Hashtable 但 -Depth 2 为 ["a","b","c"] 提供了 "a b c" 而不是 Object[] 我认为这很不合逻辑
-
Depth只是 PowerShell 将“解开”值的嵌套级别数。否则,它将默认为对象字符串表示,这正是您所看到的 -
字符串表示是指“[string]”而不是“... | Out-String”。现在很清楚了。
-
正确,对象本身被转换为字符串
标签: arrays string powershell casting