在将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情况下有问题时,它可以正常工作。
答案 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)|选择对象
此解决方案对我有用