具有OData的PowerShell ConvertFrom-Json返回空集合

时间:2019-12-01 11:40:17

标签: json powershell rest odata

在将json转换为对象数组时,我遇到了一个奇怪的问题

$response = Invoke-WebRequest -Method Get -UseDefaultCredentials  -Uri $url;
$result = ConvertFrom-Json -InputObject $response
write-host $result

尽管json充满了内容,它仍返回空集合(value=System.Object[])。

请问这个问题的可能原因和解决方案?

PS。当URL包含特定的Key且仅在GetAll情况下有问题时,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

通常-inputobject只能处理1个项目。它更像是管道的占位符。如果$ response是一个数组,则必须采用这种方式,因此convertfrom-json的process块可以处理所有项目。

$result = $response | ConvertFrom-Json

在您的示例中,唯一的问题是写主机似乎将对象数组输出为null,这似乎是一个错误或“次佳的行为”。

$response = ' [ {"Type": "1","Name": "First"}, {"Type": "2","Name": "Second"}, {"Type": "3","Name": "Third"} ] '
$result = convertfrom-json -inputobject $response
write-host $result   

(write-host $result) -eq $null

True

但是写输出或简单地$ result都可以:

$response = ' [ {"Type": "1","Name": "First"}, {"Type": "2","Name": "Second"}, {"Type": "3","Name": "Third"} ] '
$result = convertfrom-json -inputobject $response
$result

Type Name
---- ----
1    First
2    Second
3    Third


答案 1 :(得分:0)

($ input | ConvertFrom-Json)|选择对象

此解决方案对我有用