在JMESPath中使用以下查询:
people[].{"index":@.index,"name":name, "state":state.name}
在此示例数据上:
{
"people": [
{
"name": "a",
"state": {"name": "up"}
},
{
"name": "b",
"state": {"name": "down"}
},
{
"name": "c",
"state": {"name": "up"}
}
]
}
我得到:
[
{
"index": null,
"name": "a",
"state": "up"
},
{
"index": null,
"name": "b",
"state": "down"
},
{
"index": null,
"name": "c",
"state": "up"
}
]
如何获取index属性以实际具有数组的索引?我意识到@.index
的语法不正确,但是还找不到能够返回索引的函数。有没有办法包含当前数组索引?
答案 0 :(得分:1)
这不完全是您要求的形式,但我可能为您提供答案:
people[].{"name":name, "state":state.name} | merge({count: length(@)}, @[*])
此请求给出以下结果:
{
"0": {
"name": "a",
"state": "up"
},
"1": {
"name": "b",
"state": "down"
},
"2": {
"name": "c",
"state": "up"
},
"count": 3
}
因此,该对象的每个属性都有一个索引,但最后一个count
除外,它仅引用属性的编号,因此,例如,如果要使用循环浏览对象的属性,可以这样做,因为您知道属性count
给出了要浏览的属性数量。
答案 1 :(得分:0)