web-dev-qa-db-fra.com

Comment charger un fichier JSON et le convertir en un objet d'un type spécifique?

J'ai un type FooObject et un fichier JSON qui a été sérialisé à partir d'une instance FooObject. Maintenant, je veux utiliser ConvertFrom-Json pour charger le fichier JSON en mémoire et convertir la sortie de la commande en un objet FooObject, puis utiliser le nouvel objet dans une cmdlet Set-Bar qui accepte uniquement FooObject comme type de paramètre.

Mais je remarque que le type de sortie de ConvertFrom-Json est PSCustomObject et je n’ai trouvé aucun moyen de convertir PSCustomObject en FooObject.

19
NonStatic

Essayez de transtyper l'objet personnalisé en FooObject:

$foo = [FooObject](Get-Content 'C:\path\to\your.json' | Out-String | ConvertFrom-Json)

Si cela ne fonctionne pas, essayez de construire l'instance FooObject avec les propriétés de l'objet d'entrée (à condition que la classe ait un constructeur comme celui-ci):

$json = Get-Content 'C:\path\to\your.json' | Out-String | ConvertFrom-Json
$foo = New-Object FooObject ($json.Foo, $json.Bar, $json.Baz)

Si cela ne fonctionne pas non plus, vous devez créer une instance FooObject vide et mettre à jour ses propriétés par la suite:

$json = Get-Content 'C:\path\to\your.json' | Out-String | ConvertFrom-Json
$foo = New-Object FooObject
$foo.AA = $json.Foo
$foo.BB = $json.Bar
$foo.CC = $json.Baz
23
Ansgar Wiechers

De là: https://blogs.technet.Microsoft.com/heyscriptingguy/2014/04/23/powertip-convert-json-file-to-powershell-object/

J'ai trouvé les œuvres suivantes géniales: 

Get-Content -Raw -Path <jsonFile>.json | ConvertFrom-Json
1
thatOneGuy