2016-03-08 20 views
7

Bir tür FooObject var ve bir FooObject örneğinden serileştirilmiş bir JSON dosyanız var. Şimdi JSON dosyasını belleğe yüklemek ve FooObject nesnesine komutun çıktısını gizlemek için ConvertFrom-Json kullanmak istiyorum ve sonra Set-Bar cmdlet'inde yalnızca parametre olarak FooObject kabul edilen bir cmdlet'i kullanın.JSON dosyası nasıl yüklenir ve belirli bir nesneye dönüştürülür?

Ancak, ConvertFrom-Json çıkış türünün PSCustomObject olduğunu farkettim ve PSCustomObject'u FooObject'a dönüştürmenin herhangi bir yolunu bulamadım.

cevap

8

FooObject özel nesne döküm deneyin:

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

Bu işe yaramazsa, giriş nesnesinin özellikleri ile FooObject örneğini inşa etmeyi (sınıf sağlanan böyle bir kurucuya sahip):

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

o da sonradan özelliklerini boş FooObject örneğini oluşturmak ve güncellemek için ihtiyaç çalışmazsa:

$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 
+0

"Set-Bar" (C#) koduna sahip olduğum için. PSCustomObject'ü kabul etmem ve onu dahili olarak 'FooObject''e dönüştürmem mümkün mü? Cmdlet kullanıcımın daha iyi yolu hangisi olacak? – NonStatic

+0

Arabirimi, "PSCustomObject" veya "Object" kabul edecek şekilde değiştirirseniz mümkün olabilir. Yine de C# ile aşina değilim. –

+3

json içeriğinizi yüklemek için '' 'Get-Content -Raw 'C: \ path \ to \ your.json'''' kullanmalısınız – Laymain

İlgili konular