Powershell无法从名为count的键中获取值



我有一个简单的json,我试图从Powershell中获取值

$webData = @'
{
"results": [
{
"facet": "266976",
"appid": "266976",
"count": 233206
},
{
"facet": "27096405",
"appid": "27096405",
"count": 85669
}
]
}
'@
$data1 = $webData | ConvertFrom-Json 
Write-Output $data1.results.count

当我写输出时,我得到值计数,而不是值本身,就像我为appid和facet所做的那样。期望结果:233206当前结果:2

我不能更改json。有没有办法让PS不把它看作一个计数运算符?谢谢你

正如mklement0所指出的,在这种情况下,数组类型的ICollection.Count属性优先于名为Count的数组元素属性的成员访问枚举。

一个简单的解决方法是使用内在方法.ForEach(string PropertyName):
$data1.results.ForEach('count')

如Santiago squared所述,ForEach()输出的类型为Collection`1。如果您确实需要一个数组,请使用数组子表达式操作符@()或使用Santiago建议的解决方法,使用GetEnumerator()

$arrayOfCount = @($data1.results.ForEach('count'))
$arrayOfCount = $data1.results.GetEnumerator().Count

输出:

233206
85669

正如Santiago Squarzon所指出的,如果你真的想获得第一个count的值对象,你可以写:

$data1.results[0].Count

输出:

233206

注意Write-Output实际上是冗余的,因为PowerShell隐式地输出"结果"任何声明。所以我在上面的示例中删除了它。