我想加载一个JSON文件并在powershell GridView中显示它。我希望这会奏效:
'[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json | Out-GridView
答案 0 :(得分:7)
('[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json) | Out-GridView
# or
$converted = '[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json
$converted | Out-GridView
这是ConvertFrom-Json
的特性以及任何隐式使用它的东西(如Invoke-RestMethod
)。它似乎没有像你期望的那样沿着管道传递对象,所以你必须完成管道来获取对象,然后再使用它们。
一种方法是将其分配给变量,另一种方法是将其包装在括号( )
中。
我不确定为什么会出现这种情况,但我认为它是一个关于内部工作以及它如何返回其对象的实现细节。
我试图看看我是否可以更多地了解这一点,使用ForEach-Object
查看出现了什么问题,但实际上只是工作了,所以这是获得它的另一种方式工作,但在一个管道中(通过使用多余的ForEach-Object
):
'[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json | ForEach-Object { $_ } | Out-GridView
# non-scrolling
'[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json | % { $_ } | ogv