我想从PowerShell的JSON文件中检索数据.我有以下JSON数据:
{
"id": "abcxyz",
"data": {
"a": {
"abc": "xyz"
},
"b": [
{
"bId": 2001,
"bData": {
"bAbc": [
{
"bAbcX": 123,
"bAbcY": 456,
"bAbcZ": "b1AbcZ0"
},
{
"bAbcX": 312,
"bAbcY": 654,
"bAbcZ": "b1AbcZ1"
}
],
"bDef": [
{
"bDefX": 456,
"bDefY": 654,
"bDefZ": "b1DefZ0"
},
{
"bDefX": 789,
"bDefY": 987,
"bDefZ": "b1DefZ1"
}
]
}
},
{
"bId": 2002,
"bData": {
"bAbc": [
{
"bAbcX": 123,
"bAbcY": 456,
"bAbcZ": "b2AbcZ0"
},
{
"bAbcX": 312,
"bAbcY": 654,
"bAbcZ": "b2AbcZ1"
}
],
"bDef": [
{
"bDefX": 456,
"bDefY": 654,
"bDefZ": "b2DefZ0"
},
{
"bDefX": 789,
"bDefY": 987,
"bDefZ": "b2DefZ1"
}
]
}
},
{
"bId": 2003,
"bData": {
"bAbc": [
{
"bAbcX": 123,
"bAbcY": 456,
"bAbcZ": "b3AbcZ0"
},
{
"bAbcX": 312,
"bAbcY": 654,
"bAbcZ": "b3AbcZ1"
}
],
"bDef": [
{
"bDefX": 456,
"bDefY": 654,
"bDefZ": "b3DefZ0"
},
{
"bDefX": 789,
"bDefY": 987,
"bDefZ": "b3DefZ1"
}
]
}
}
]
}
}
我想用PowerShell中的JSONPath $.data.b[*].bData.bAbc[0].bAbcZ
检索数据.预期结果为:
[
"b1AbcZ0",
"b2AbcZ0",
"b3AbcZ0"
]
JSONPath在https://jsonpath.com/中工作,以下是我try 在PowerShell中检索它的方式:
$JSON = Get-Content ".\test.json" | Out-String | ConvertFrom-Json
$JSON.data.b[*].bData.bAbc[0].bAbcZ
但当我在PowerShell中try 时,*
是无效的,这是输出:
+ $JSON.data.b[*].bData.bAbc[0].bAbcZ
+ ~
Array index expression is missing or not valid.
+ $JSON.data.b[*].bData.bAbc[0].bAbcZ
+ ~
You must provide a value expression following the '*' operator.
+ $JSON.data.b[*].bData.bAbc[0].bAbcZ
+ ~
Unexpected token ']' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : MissingArrayIndexExpression
我也try 使用$JSON.data.b.bData.bAbc[0].bAbcZ
,但它只检索第一个数据,即b1AbcZ0
.PowerShell对象中的JSON通配符(*
)的类似功能是什么?