web-dev-qa-db-ja.com

PowerShellを使用してJSONを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でこれを正しく変換するにはどうすればよいですか?

6
Anders Ekelund

ただ(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
11
Mark Wragg

Select-Objectコマンドレットと-expandパラメーターを使用して、CSV内でresultsプロパティを選択する必要があります。

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

私はjsonをREST web apiから取得していましたが、次のように動作することがわかりました。

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
1
Pat Fahy