J'ai un exemple au format JSON ici qui convertit bien si j'utilise quelque chose comme: https://konklone.io/json/
J'ai essayé le code suivant dans PowerShell:
(Get-Content -Path $pathToJsonFile | ConvertFrom-Json)
| ConvertTo-Csv -NoTypeInformation
| Set-Content $pathToOutputFile
Mais le seul résultat que je reçois est le suivant:
{"totalCount":19,"resultCount":19,"hasMore":false,"results":
Comment procéder pour convertir cela correctement dans PowerShell?
En regardant uniquement (Get-Content -Path $pathToJsonFile) | ConvertFrom-Json
, il semble que le reste du JSON se dirige vers une propriété results
afin que nous puissions obtenir le résultat que je pense que vous voulez en faisant:
((Get-Content -Path $pathToJsonFile) | ConvertFrom-Json).results |
ConvertTo-Csv -NoTypeInformation |
Set-Content $pathToOutputFile
Pour votre information, vous pouvez faire ConvertTo-Csv
et Set-Content
en un coup avec Export-CSV
:
((Get-Content -Path $pathToJsonFile) | ConvertFrom-Json).results |
Export-CSV $pathToOutputFile -NoTypeInformation
Vous devez sélectionner la propriété results
dans votre fichier CSV à l'aide de la cmdlet Select-Object
avec le paramètre -expand
:
Get-Content -Path $pathToJsonFile |
ConvertFrom-Json |
Select-Object -expand results |
ConvertTo-Csv -NoTypeInformation |
Set-Content $pathToOutputFile
Je recevais mon json d'un REST api web et j'ai constaté que ça fonctionnait:
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