我如何使用 jmesPath 过滤带有包含数组的表达式的 javascript 对象?
How can I filter javascript objects with an expression that has array in it with jmesPath?
我有一组用户,每个用户都有几个角色。数组的例子如下所示。
[
{
id: 1,
username: 'john',
roles: [
{id: 500, name: 'Admin'},
{id: 501, name: 'Owner'}
]
},
{
id: 2,
username: 'joe',
roles: [
{id: 500, name: 'Admin'},
]
},
{
id: 3,
username: 'june',
roles: [
{id: 502, name: 'User'},
]
}
]
我正在尝试使用 jmesPath 获取所有具有 Admin 角色的用户。我试过 [?roles[].name=='Admin']
但这给出了 null
值。可以用 jmesPath 做到这一点,如果可以,你能给我一个这个例子的表达式吗?
您可以使用普通 JavaScript 获得相同的结果:
假设您的数组存储在 var users = [...].
users.filter((i)=> i.roles.some((s) => s.name === "Admin"))
我对这个例子和你的数据做了一些尝试
http://jmespath.org/examples.html#filtering-and-selecting-nested-data
我用这个表达式让它工作
[?roles[?name=='Admin']]
我有一组用户,每个用户都有几个角色。数组的例子如下所示。
[
{
id: 1,
username: 'john',
roles: [
{id: 500, name: 'Admin'},
{id: 501, name: 'Owner'}
]
},
{
id: 2,
username: 'joe',
roles: [
{id: 500, name: 'Admin'},
]
},
{
id: 3,
username: 'june',
roles: [
{id: 502, name: 'User'},
]
}
]
我正在尝试使用 jmesPath 获取所有具有 Admin 角色的用户。我试过 [?roles[].name=='Admin']
但这给出了 null
值。可以用 jmesPath 做到这一点,如果可以,你能给我一个这个例子的表达式吗?
您可以使用普通 JavaScript 获得相同的结果:
假设您的数组存储在 var users = [...].
users.filter((i)=> i.roles.some((s) => s.name === "Admin"))
我对这个例子和你的数据做了一些尝试
http://jmespath.org/examples.html#filtering-and-selecting-nested-data
我用这个表达式让它工作
[?roles[?name=='Admin']]