使用PowerShell将JSON转换为CSV

时间:2017-04-24 18:01:50

标签: json powershell csv

我有一个示例JSON格式的here,如果我使用类似的内容,它会很好地转换:https://konklone.io/json/

我在PowerShell中尝试了以下代码:

(Get-Content -Path $pathToJsonFile | ConvertFrom-Json) 
| ConvertTo-Csv -NoTypeInformation 
| Set-Content $pathToOutputFile

但我得到的唯一结果是:

{"totalCount":19,"resultCount":19,"hasMore":false,"results":

如何在PowerShell中正确转换?

3 个答案:

答案 0 :(得分:10)

通过查看(Get-Content -Path $pathToJsonFile) | ConvertFrom-Json,看起来JSON的其余部分将进入results属性,因此我们可以通过以下方式获得我想要的结果:

((Get-Content -Path $pathToJsonFile) | ConvertFrom-Json).results |
    ConvertTo-Csv -NoTypeInformation |
    Set-Content $pathToOutputFile

仅供参考,您可以使用ConvertTo-Csv一次性Set-ContentExport-CSV

((Get-Content -Path $pathToJsonFile) | ConvertFrom-Json).results |
    Export-CSV $pathToOutputFile -NoTypeInformation

答案 1 :(得分:5)

您必须使用results cmdlet和Select-Object参数选择CSV中的-expand媒体资源:

Get-Content -Path $pathToJsonFile  | 
    ConvertFrom-Json | 
    Select-Object -expand results | 
    ConvertTo-Csv -NoTypeInformation |
    Set-Content $pathToOutputFile

答案 2 :(得分:1)

我从REST web api获取了json并发现以下工作:

Invoke-WebRequest -method GET -uri $RemoteHost -Headers $headers 
 | ConvertFrom-Json 
 | Select-Object -ExpandProperty  <Name of object in json>
 | ConvertTo-Csv -NoTypeInformation 
 | Set-Content $pathToOutputFile

I end up with a perfectly formatted csv file