我有一个简单的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隐式地输出"结果"任何声明。所以我在上面的示例中删除了它。