首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMESPath当前数组索引

JMESPath当前数组索引
EN

Stack Overflow用户
提问于 2018-07-26 03:26:35
回答 2查看 910关注 0票数 4

在使用此查询的JMESPath中:

代码语言:javascript
复制
people[].{"index":@.index,"name":name, "state":state.name}

在此示例数据中:

代码语言:javascript
复制
{
  "people": [
    {
      "name": "a",
      "state": {"name": "up"}
    },
    {
      "name": "b",
      "state": {"name": "down"}
    },
    {
      "name": "c",
      "state": {"name": "up"}
    }
  ]
}

我得到了:

代码语言:javascript
复制
[
  {
    "index": null,
    "name": "a",
    "state": "up"
  },
  {
    "index": null,
    "name": "b",
    "state": "down"
  },
  {
    "index": null,
     "name": "c",
     "state": "up"
  }
]

如何让index属性实际拥有数组的索引?我意识到@.index不是正确的语法,但是还没有找到能够返回索引的函数。有没有办法包含当前的数组索引?

EN

回答 2

Stack Overflow用户

发布于 2019-03-23 10:47:33

用例

  • 使用Jmespath查询语法从一系列数组元素中提取当前数组元素的数字索引。

陷阱

在撰写本文时(2019-03-22),此功能不是标准

  • 的一部分

解决方法

  • 当从各种编程语言中运行Jmespath时,这是可能的,但是这必须在Jmespath之外完成。
票数 2
EN

Stack Overflow用户

发布于 2019-08-23 23:28:49

这不完全是你要求的表格,但我有一个可能的答案给你:

people[].{"name":name, "state":state.name} | merge({count: length(@)}, @[*])

此请求提供以下结果:

代码语言:javascript
复制
{
  "0": {
    "name": "a",
    "state": "up"
  },
  "1": {
    "name": "b",
    "state": "down"
  },
  "2": {
    "name": "c",
    "state": "up"
  },
  "count": 3
}

所以这个对象的每个属性都有一个索引,除了最后一个,它只是引用了属性的数量,所以如果你想用一个循环来浏览对象的属性,你可以这样做,因为你知道attribute count给出了要浏览的属性的数量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51526317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档