首页 > 解决方案 > 将每个(属性?对象?)下具有大量值的 JSON 转换为具有多行的 CSV,返回一个字符串中的所有值

问题描述

我正在尝试使用 PowerShell 来转换具有以下格式的 json:

{"Value1":[89,91,88,71,59],"Value2":[53,58,54,53,58]}

到具有以下格式的 CSV:

Value1,Value2
89,53
91,58
88,54
71,53
59,58

我遇到的问题是我拼凑的这段代码

Get-Content 'C:\test\test.json' | ConvertFrom-Json | 
select  @{n='value1';e={-split $_.value1}},
        @{n='value2';e={-split $_.value2}} |
Export-Csv -NoTypeInformation 'C:\test\test.csv'

正在制作具有以下格式的 CSV:

Value1,Value2
89 91 88 71 59,53 58 54 53 58

有人对我可以在这里做什么有任何想法吗?我对 PowerShell 真的很陌生,而且我迷路了。我在这里和其他网站上阅读了大量类似的项目,但没有一个完全符合我遇到的问题。

谢谢

标签: jsonpowershellcsv

解决方案


可能有更复杂的解决方案,但至少对于这个简单的示例,我认为以下代码段有效:

$Var = '{"Value1":[89,91,88,71,59],"Value2":[53,58,54,53,58]}' | ConvertFrom-Json 

$Var.Value1.Count
for ($i = 0; $i -lt $Var.Value1.Count; $i++) {
    [PSCustomObject]@{
        Value1 = $Var.Value1[$i]
        Value2 = $Var.Value2[$i]
    }
}

输出如下所示:

Value1 Value2
------ ------
    89     53
    91     58
    88     54
    71     53
    59     58

推荐阅读