Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell ConvertFrom Json with OData返回空集合_Json_Powershell_Rest_Odata - Fatal编程技术网

PowerShell ConvertFrom Json with OData返回空集合

PowerShell ConvertFrom Json with OData返回空集合,json,powershell,rest,odata,Json,Powershell,Rest,Odata,在将json转换为对象数组时,我遇到了一个奇怪的问题 $response = Invoke-WebRequest -Method Get -UseDefaultCredentials -Uri $url; $result = ConvertFrom-Json -InputObject $response write-host $result 它返回空集合(value=System.Object[]),尽管json充满了内容 你能告诉我这个问题的可能原因和解决方法吗 另外,当URL包含特定的键

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

$response = Invoke-WebRequest -Method Get -UseDefaultCredentials  -Uri $url;
$result = ConvertFrom-Json -InputObject $response
write-host $result
它返回空集合(
value=System.Object[]
),尽管json充满了内容

你能告诉我这个问题的可能原因和解决方法吗


另外,当URL包含特定的键并且只有GetAll情况下才有问题时,它可以正常工作

通常-inputobject只能处理1项。它更像是管道的占位符。如果$response是一个数组,那么必须这样做,这样convertfromjson的进程块就可以处理所有项

$result = $response | ConvertFrom-Json
在您的示例中,唯一的问题是write host似乎将对象数组输出为null,这似乎是一个bug或“次优行为”

但是写入输出或简单地$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


($input | CONVERTFORM Json)|选择对象


此解决方案适用于我

如何确定它是空集合?注释“(value=System.Objext[])建议您将其转换回Json,并面临一个已知的问题:谢谢您的想法。Json的ConvertFrom只能处理一个对象,至少在默认情况下是这样。我举了个例子。但是看起来$result=$response | convertfromjson返回相同的结果System.Object[]。是否有任何参数或解决方法?显然,问题的原因是ConvertFrom Json在默认情况下不会转换数组$input='[{“Type”:“1”,“Name”:“First”},{“Type”:“2”,“Name”:“Second”},{“Type”:“3”,“Name”:“Third”}]“$output=$input | ConvertFrom Json Write Host$output#Nothing$cnt=(ConvertFrom Json$input)。Count Write Host$cnt#3如何使用数组?该示例实际上不是powershell字符串数组$输入是一个保留变量,因此使用不同的名称会更好。是的,写主机似乎什么也不输出,这很奇怪。它似乎试图将其转换为字符串$输出本身可以很好地工作,或者写入输出$output。我刚刚发现了关于类似情况的更有趣的解决方案:[link]$working=$jsonNotWorking | ConvertFrom Json | Select-ExpandProperty value
$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