【发布时间】:2020-06-03 18:32:37
【问题描述】:
我在访问 psobject 的嵌套部分时遇到了困难。 我用过
$response = Invoke-RestMethod
从应用程序中提取信息。 $response 然后包含一个 json 文件。
我已经清理了 json 文件,但这是通用格式。
Response:{
"total": 2,
"items": [
{
"id": 1,
"name": "127.0.0.1",
"properties": [
{
"name": "var1",
"value": "10"
},
{
"name": "var2",
"value": "20"
},
{
"name": "var3",
"value": "30"
},
{
"name": "var4",
"value": "40"
}
]
},
{
"id": 2,
"name": "10.2.2.2",
"properties": [
{
"name": "var1",
"value": "100"
},
{
"name": "var2",
"value": "200"
},
{
"name": "var3",
"value": "300"
},
{
"name": "var4",
"value": "400"
},
{
"name": "var5",
"value": "500"
}
]
},
],
"searchId": null,
"isMin": false
}
我可以使用简单的 for 循环直接在 items 层下轻松访问 id 和 name
for ( $index = 0; $index -lt $data.Items.count; $index++)
{
$id=$data.Items.id[$index]
$name=$data.Items.name[$index]
}
但我不知道如何引用属性部分下的内容。
这是我尝试过的一些东西
$var1 = Select-Object -ExpandProperty $data.Items.properties[$index]
$var1 = $data.Items.properties[$index] | Select-Object -expand name
$var1 = $data.Items.properties[$index] | Select -property *
其中一些接近,但只返回一个名称条目,而不是全部。
【问题讨论】:
-
不太确定,您到底想看到什么。如果您想列出单个项目的所有名称条目,一个简单的
$data.items[$index].properties就可以了。 -
您好,感谢收看。这导致了这个错误-
+ $var1 = $data.Items.[$index].properties + ~ Missing type name after '['.我希望能够例如在第一项中获取 var2 (20) 的值并将其分配给一个新的 var -
使用
$data.Items[$index].properties代替$data.Items.[$index].properties。[$index]之前有一个多余的点,不应该存在。
标签: json powershell psobject