У меня следующий вызов API в скрипте powershell (Powershell 4.0):
$Json = Invoke-WebRequest -Uri $RequestURL -UseBasicParsing -Headers $headers -ContentType 'application/json; charset=utf-8' -Method POST -Body $postParams -TimeoutSec 40
... и содержимое ответа (которое представляет собой строку в формате JSON) записано в файл:
Set-Content $path -Value $Json.Content
Пример типичного ответа ...
{
"MyArray": [{
"MyField": "A1",
"MyField2": "A2"
}, {
"MyField": "B1",
"MyField2": "B2"
}]
}
Все хорошо, но теперь у меня есть требование проанализировать возвращенное содержимое как JSON и запросите некоторые свойства из этого скрипта Powershell.
Я предполагаю, что мне нужно преобразовать мою строку в 'правильную' JSON, а затем в объект powershell для доступа к свойствам ... поэтому я попробовал комбинации ConvertTo- Json и ConvertFrom- Json но, кажется, никогда не может получить к нему доступ, кроме как в строке. Например ...
$x = $Json.Content | ConvertTo-Json
Write-Host $x.MyArray[0].MyField
$y = $x | ConvertFrom-Json
Write-Host $y[0].MyArray[0].MyField
В обоих случаях выше я получаю сообщение об ошибке «Невозможно индексировать в нулевой массив», указывающее на то, что MyArray равен нулю.
Как мне преобразовать мой ответный объект $ Json в объект, в который я могу углубиться?