【问题标题】:Windows PowerShell JSON to CSV "System.Object[]" issuesWindows PowerShell JSON 到 CSV“System.Object[]”问题
【发布时间】:2023-03-05 00:48:01
【问题描述】:

我已经挣扎了 3 天,试图将 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 等

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

【问题讨论】:

  • 您的 JSON 是一个数组数组。你控制 JSON 的创建吗?

标签: json powershell csv


【解决方案1】:

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'

【讨论】:

    【解决方案2】:

    所以这是最令人费解的,我希望其他人回答。但这对我有用。如果不更改 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 的默认设置,但您可以将其更改为其他任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2018-12-08
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 2021-11-18
      相关资源
      最近更新 更多