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
.
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
J'ai trouvé les œuvres suivantes géniales:
Get-Content -Raw -Path <jsonFile>.json | ConvertFrom-Json