微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用切片使用 jmespath 访问某些元素?

如何解决如何使用切片使用 jmespath 访问某些元素?

我有以下 JSON

{
    "items": [
        {
            "configurationStatus": "SYNCED","conflictDetectionState": "IN_SYNC","connectivityState": "ONLINE",

我可以使用 items[*].isModel 访问内部的单个元素,但是,我不知道如何访问前 3 个元素。我尝试过类似 items[*].[0:2]方法,但没有奏效。我很好奇如何使用切片访问前 3 个元素。

解决方法

您在尝试实现此目标时可能会遇到一些问题,因为正如 JMESPath 文档中所指出的,对象是:

对象(键值对的无序集合)

来源:https://jmespath.org/specification.html,重点,我的

因此,您最终可能会根据实现获得不同的密钥,并获得真正随机的结果。


现在你的方法的问题是切片只能作用于数组。

切片表达式允许您选择数组的连续子集

来源:https://jmespath.org/specification.html#slices,重点,我的

然后你可以做的是,为了从散列中获得一个数组是使用 values 函数,但请注意你会在这个过程中丢失键/值关联强>.
然后,假设您有一个数组,您现在可以应用切片技术。

查询:

items[].values(@)[0:3]

关于 JSON:

{
    "items": [
        {
            "configurationStatus": "SYNCED","conflictDetectionState": "IN_SYNC","connectivityState": "ONLINE","foo": "bar","baz": "qux"
        },{
            "configurationStatus": "SYNCED′","conflictDetectionState": "IN_SYNC′","connectivityState": "ONLINE′","foo": "bar′","baz": "qux′"
        }
    ]
}

这将给出:

[
  [
    "SYNCED","IN_SYNC","ONLINE"
  ],[
    "SYNCED′","IN_SYNC′","ONLINE′"
  ]
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。