Windows PowerShell JSON 到 CSV "System.Object[]"问题



我一直在努力将 JSON 文件转换为 CSV。 不幸的是,我对powershell不太熟悉,任何帮助将不胜感激。 下面是 JSON 字符串:

{"inputFile": [["Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"], ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"], ["K", "L", "M", "N", "O", "P", "Q", "R", "S", "T"]]}

我尝试过的命令行:

ConvertFrom-JSON (Get-Content 'path.json' -Raw) |
ConvertTo-Csv -NoTypeInformation |
Select-Object -Skip 1 |
Set-Content 'path.csv'
Get-Content 'path.json' -Raw |
ConvertFrom-Json |
Select -Expand inputFile |
ForEach {$_.inputFile = $_.inputFile -join ' '$_} |
Export-Csv 'path.csv' -NoTypeInformation

无。。。

我希望得到一个CSV文件:

1、列 2、列 3 等 A,B,C等

我可以使用哪些命令组合来执行此操作?

Export-Csv需要一个对象列表作为输入。对象的属性(由第一个对象的属性标识)将导出为 CSV 的列。要使 cmdlet 按预期方式工作,输入数据必须如下所示:

{
"inputFile": [
{
"Column1": "A",
"Column2": "B",
...
},
{
"Column1": "K",
"Column2": "L",
...
}
]
}

在您的情况下,您将每一行放在一个单独的数组中,因此更容易连接这些数组,然后将输出作为文本文件写入:

Get-Content 'path.json' -Raw |
ConvertFrom-Json |
Select-Object -Expand inputFile |
ForEach-Object { $_ -join ',' } |
Set-Content 'path.csv'

所以这几乎是复杂的,我希望其他人回答。但这对我有用。如果不更改 JSON 中的数据,我不确定还能告诉您什么。

$y = ''
$x = '{"inputFile": [["Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"], ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"], ["K", "L", "M", "N", "O", "P", "Q", "R", "S", "T"]]}'
($x | ConvertFrom-JSON).inputfile | % {$_ | %{$y += ($_ + "`t")}; $y+="`n"}
$y | out-file x.csv

它基本上只是文本操作。我将其创建为制表符分隔,因为这是 excel 的默认选项,但您可以将其更改为其他任何内容。

最新更新