it-roy-ru.com

Как загрузить файл JSON и преобразовать его в объект определенного типа?

У меня есть тип FooObject, и у меня есть файл JSON, который был сериализован из экземпляра FooObject. Теперь я хочу использовать ConvertFrom-Json, чтобы загрузить файл JSON в память и преобразовать выходные данные команды в объект FooObject, а затем использовать новый объект в командлете Set-Bar, который принимает только FooObject в качестве типа параметра.

Но я заметил, что тип вывода ConvertFrom-Json - PSCustomObject, и я не нашел способа преобразовать PSCustomObject в FooObject.

19
NonStatic

Попробуйте привести пользовательский объект к FooObject:

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

Если это не сработает, попробуйте создать экземпляр FooObject со свойствами входного объекта (при условии, что класс имеет такой конструктор):

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

Если это также не работает, вам нужно создать пустой экземпляр FooObject и впоследствии обновить его свойства:

$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

Отсюда: https://blogs.technet.Microsoft.com/heyscriptingguy/2014/04/23/powertip-convert-json-file-to-powershell-object/

Я нашел следующие работы отлично: 

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