在PowerShell中将对象数组转换为字符串数组

时间:2016-04-06 23:00:33

标签: powershell

我想从文件中读取JSON并将其转换为由两个属性的串联构成的字符串数组。

到目前为止,我已经得到了这个:

 $packageCache = Get-Content $pathtojsonfile | ConvertFrom-Json | %{$($_.Key) + "-" + $($_.Value)}

 Write-Output $packageCache

问题是它最终会创建一个包含Id值和Version值的数组,作为数组中完全不同的项。

最终看起来像这样:

key1
key2
value1
value2

我有什么问题?

更新: JSON如下所示:

[{ "Key":"key1", "Value":"value1"},{"Key":"key2", "Value":"value2"}]

预期结果如下:

key1-value1
key2-value2

发布的代码就是全部。是的,它是剧本的一部分。

2 个答案:

答案 0 :(得分:1)

这是最后的管道绑定,搞砸了你,只需将其改为:

$json = Get-Content $pathtojsonfile | ConvertFrom-Json
$packageCache = $json |% {"$($_.Key)-$($_.Value)"}
$packageCache
key1-value1
key2-value2

顺便说一句,我还要指出+符号不是必需的,只需将整个内容包装在"中,如上所示。

答案 1 :(得分:0)

CodedBeard打败了我,但是......

我在这里走错了路。显然,ConvertFrom-Json返回了一个Object []。所以,我只是迭代单个项目而没有到达任何地方。

如果我展开返回的数组,一切都会开始工作。

($packageCache = Get-Content $pathtojsonfile | ConvertFrom-Json) | %{$($_.Key) + "-" + $($_.Value)}

请注意命令第一部分周围的