如何使用切片访问带有 jmespath 的某些元素?
How do I access certain elements with jmespath using slicing?
我有以下JSON
{
"items": [
{
"configurationStatus": "SYNCED",
"conflictDetectionState": "IN_SYNC",
"connectivityState": "ONLINE",
我可以使用 items[*].isModel
访问内部的各个元素,但是,我不知道如何访问前 3 个元素。我试过类似 items[*].[0:2]
的方法,但没有用。我很好奇如何使用切片访问前 3 个元素。
您可能会在尝试实现此目的时遇到一些问题,因为正如 JMESPath 文档中指出的那样,对象是:
object (an unordered collection of key value pairs)
来源:https://jmespath.org/specification.html,重点,我的
因此,您最终可能会根据实施情况得到不同的密钥,并获得真正随机的结果。
现在你的方法的问题是切片只能作用于数组。
A slice expression allows you to select a contiguous subset of an array.
来源:https://jmespath.org/specification.html#slices,重点,我的
为了从散列中得到一个数组,你可以做的是使用 values
函数,但请注意 你会丢失 key/value关联过程中.
然后,假设您有一个数组,您现在可以应用切片技术。
所以查询:
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′"
]
]
我有以下JSON
{
"items": [
{
"configurationStatus": "SYNCED",
"conflictDetectionState": "IN_SYNC",
"connectivityState": "ONLINE",
我可以使用 items[*].isModel
访问内部的各个元素,但是,我不知道如何访问前 3 个元素。我试过类似 items[*].[0:2]
的方法,但没有用。我很好奇如何使用切片访问前 3 个元素。
您可能会在尝试实现此目的时遇到一些问题,因为正如 JMESPath 文档中指出的那样,对象是:
object (an unordered collection of key value pairs)
来源:https://jmespath.org/specification.html,重点,我的
因此,您最终可能会根据实施情况得到不同的密钥,并获得真正随机的结果。
现在你的方法的问题是切片只能作用于数组。
A slice expression allows you to select a contiguous subset of an array.
来源:https://jmespath.org/specification.html#slices,重点,我的
为了从散列中得到一个数组,你可以做的是使用 values
函数,但请注意 你会丢失 key/value关联过程中.
然后,假设您有一个数组,您现在可以应用切片技术。
所以查询:
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′"
]
]