webentwicklung-frage-antwort-db.com.de

Konvertieren Sie JSON in CSV mithilfe von PowerShell

Ich habe ein Beispiel im JSON-Format hier , das sich gut umwandelt, wenn ich Folgendes verwende: https://konklone.io/json/

Ich habe den folgenden Code in PowerShell ausprobiert:

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

Aber das einzige Ergebnis, das ich bekomme, ist folgendes:

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

Wie kann ich das richtig in PowerShell konvertieren?

6
Anders Ekelund

Wenn Sie nur (Get-Content -Path $pathToJsonFile) | ConvertFrom-Json betrachten, sieht es so aus, als ob der Rest der JSON in eine results -Eigenschaft wechselt, sodass wir das gewünschte Ergebnis erzielen können, indem Sie Folgendes tun:

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

Zu Ihrer Information können Sie ConvertTo-Csv und Set-Content in einem Zug mit Export-CSV ausführen:

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

Sie müssen die results -Eigenschaft in Ihrer CSV mit dem Select-Object-Cmdlet zusammen mit dem -expand-Parameter auswählen: 

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

Ich erhielt meinen Json von einem REST - Web-API und stellte fest, dass Folgendes funktioniert:

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