首页 > 解决方案 > PowerShell 无法将 JSON 转换为 CSV

问题描述

我花了一些时间研究如何使用 powershell 将 Json 转换为 CSV 文件,但未能正确完成。下面是我创建的语法:

$pathToOutputFile = "C:\OrderLinQ\TESTING\IN\CatalogsRetrieved\test.txt"
$pathToJsonFile = "C:\OrderLinQ\TESTING\IN\CatalogsRetrieved\test.json"
Get-Content -Path $pathToJsonFile |
    ConvertFrom-Json |
    ConvertTo-Csv -NoTypeInformation |
    Set-Content $pathToOutputFile

但是,当我尝试执行此操作时,出现参数异常错误:

ConvertFrom-Json:传入的数组无效,应为“]”。(1): [
在行:1 字符:69
+ 获取内容“C:\OrderLinQ\TESTING\IN\CatalogsRetrieved\test.json”| 转换自- ...
+~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand

在此处输入图像描述

关于我做错了什么有什么想法吗?我已经使用 JSONLint 验证了我的文件,它显示已验证。示例文件可以在https://api.myjson.com/bins/mo59w找到。任何帮助表示赞赏!

标签: jsonpowershell

解决方案


尝试这个。我还附上了输出

$pathToOutputFile = "D:\output.csv"
$pathToJsonFile = "D:\test.json"
$json = Get-Content -Path $pathToJsonFile

    function ConvertFrom-JsonToCsv {
    param(
        [Parameter(ValueFromPipeline)]
        $json        
    )

    Process {
        ($json | ConvertFrom-Json) | ConvertTo-Csv -NoTypeInformation
    }
}

ConvertFrom-JsonToCsv $json | Set-Content $pathToOutputFile

输出在此处输入图像描述


推荐阅读