在使用此查询的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不是正确的语法,但是还没有找到能够返回索引的函数。有没有办法包含当前的数组索引?
发布于 2019-03-23 10:47:33
用例
陷阱
在撰写本文时(2019-03-22),此功能不是标准
解决方法
发布于 2019-08-23 23:28:49
这不完全是你要求的表格,但我有一个可能的答案给你:
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
}所以这个对象的每个属性都有一个索引,除了最后一个,它只是引用了属性的数量,所以如果你想用一个循环来浏览对象的属性,你可以这样做,因为你知道attribute count给出了要浏览的属性的数量。
https://stackoverflow.com/questions/51526317
复制相似问题