我有一个简单的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那样的值本身.

我无法更改json.

推荐答案

mklement0所述,在这种情况下,数组类型的ICollection.Count属性优先于名为Count的数组元素属性的member access enumeration.

一个简单的解决方法是使用intrinsic method .ForEach(string PropertyName):

$data1.results.ForEach('count')

Santiago Squarzon所述,ForEach()输出的类型是Collection`1.如果实际需要数组,请使用数组子表达式运算符@()或使用Santiago建议的解决方法,使用GetEnumerator().

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

输出:

233206
85669

Santiago Squarzon所述,如果您实际上只想获得first对象的值count,您可以编写:

$data1.results[0].Count

输出:

233206

请注意,Write-Output实际上是冗余的,因为PowerShell implicitly输出任何语句的"结果".所以我在上面的样本中删除了它.

Json相关问答推荐

使用WSO2 JsonTransform Mediator对空值执行JsonExceptionUndeletedOperationException

如何创建可由Gin序列化到json的排序键值映射?

Vega-Lite(Deneb):难以将最小和最大值应用于折线图和文本标签以及线条末尾的点

如何将文件夹组织的.json文件合并为一个JSON文件,文件夹/文件名作为键

使用jq根据对象中键的值查找对象

从 Inno Setup 中的 JSON 文件的每个对象中读取特定字符串

JSONPath:查找子项目条件在字符串列表中的项目

JOLT JSON 将值从一对多转换为一对一

在 JOLT 中重新排列值

PowerShell:如何将哈希表输出为 json 并使用 foreach 循环将其存储在变量中?

如何在linux中用jq过滤json数组?

为什么在测试 RSPEC 时 JBuilder 不返回 JSON 中的响应正文

通过 RestAssured 中的 JsonPath 访问匿名数组的元素

Select 什么数据类型json或者jsonb或者text

在 Django 1.9 中,使用 JSONField(本机 postgres jsonb)的约定是什么?

数据包含连续问号时无法理解的 jQuery $.ajax() 行为

与classic 规范化表相比,postgres JSON 索引是否足够高效?

JSON 和 BSON 哪个更轻量级?

如何从 BindingResult 获取控制器中的错误文本

如何在 JAVA 中对 JSONArray 进行排序