问题标签 [jmespath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
182 浏览

json - 用于查找主机和设备的最新快照的 JSON 查询?

我正在尝试使用该aws ec2命令在 AWS 中查找设备和主机的最新快照。我从aws ec2 describe-snapshots.

如您所见,我可以为同一主机(请参阅带有密钥主机名和设备名的标签)和设备创建多个快照。开始时间不同。

如何在 Ansible 中查询此 JSON 以获得主机名和设备的最新快照?我不经常这样做,因此对查询语法感到困惑。

到目前为止,我有以下内容。

但是,如何选择 Tags.Value 等于 Key 为“主机名”的某个值的所有快照元素?然后我如何从我得到的列表中选择最新的?

0 投票
2 回答
368 浏览

jmespath - 如何从父项中获取所有子元素的列表

我有一个字典列表,其中包含一个字段中的另一个列表。我想“展平”该列表,因此它为每个子元素提供了从父项复制到其中的一个字段(或一些字段)。例子:

源数据:

预期结果:

0 投票
1 回答
1133 浏览

jmespath - JMESPath 的新手-> 没有键/值对的过滤器数组

我正在尝试使用 jmes 过滤对象列表,

到目前为止,我能够过滤一个相当大的数据结构,所以我得到一个这样的结构列表:

我需要的是过滤这个列表,所以我只得到目标数组中包含“blabla”的元素。我似乎没有找到这样的东西。实现这种过滤器的正确方法是什么?我找到的所有信息都是用于过滤包含键/值对的数组......

0 投票
1 回答
1271 浏览

ansible - 过滤地址匹配条件

我想将允许的 VLAN 列表作为变量提供给我的服务器。

Ansible playbook 应该能够根据这个 VLAN 过滤服务器的 IP 地址。

  • 我有服务器上所有可用 IP 地址的列表(ansible_all_ipv4_addresses来自 ansible 事实)

  • 我有一个全局变量my_subnets

    /li>
  • 而且我有每个服务变量allowed_vlans

    /li>

我正在寻找一种如何模板化的"192.168.2.0/24"方法"192.168.5.0/24"


我在想:

1.金贾方式

匹配的项目中提取并通过ipaddr ()过滤器映射它们。my_subnets allowed_vlansansible_all_ipv4_addresses

2.JSON查询方式

我试过了:

但似乎 json_query 没有使用 python 语法来评估数组中是否有东西。

0 投票
1 回答
392 浏览

jmespath - jmesPath 查询查找帮助。这个查询对吗?

我有这个 JSON 对象:

我有几个具有不同索引值的对象。例如,如果我想对此进行匹配,id/name: "BBCommercialPropertyStructureFloodCoverage"并且位置值为 0,结构值为 1,我该如何使用 jmespath 来做到这一点?

到目前为止我有这个:

const floodCoverageQuery = [?id.name=='BBCommercialPropertyStructureFloodCoverage' && link[key=='Location' && select.value==0]] && link[key=="structure" && select.value==1]]

这是正确的吗?

0 投票
1 回答
1003 浏览

jsonpath - 根据子键过滤 JSON 对象

我正在尝试找到一种应用以下过滤器的程序方式。给定以下对象,如何获取包含 child 的所有顶级键c2

预期结果:

我需要 JSONPath、JMESPath 或 ObjectPath 语法中的过滤器。

我在 ObjectPath 中尝试过无数种组合,例如 JSONPath$.*[@.b.c2]中的东西$..[?(b.c2)],直至 JMESPath 之类的构造@.* | [?contains(keys(@), 'c2')]-@.*[b.c2] | @都无济于事。

0 投票
2 回答
257 浏览

ansible - 具有值范围的 JMESPath 查询表达式

我有下面的 json 有一个范围。我正在尝试从 json 中获取要用作 ansible 变量的范围中特定条目的值。

例如,我想使用 JSON 查询过滤器从下面的 json 中获取folderof 的值,server002以用作 ansible 变量。请帮忙。

0 投票
1 回答
50 浏览

amazon-s3 - 从 AWS CLI 响应中消除元素

注意:我实际上是在 Python 和 Boto3 库中尝试这样做,但我将使用 AWS CLI 来解释我正在尝试做什么。

我正在 AWS 中对我的存储桶进行 list-object-versions 调用...

响应如下...

我想告诉 AWS 不要使用 DeleteMarkers 返回任何结果。

关于如何使用 --query 和 JMESPath 消除 DeleteMarkers 但在响应中保留 CommonPrefixes & Versions 的任何想法?

0 投票
1 回答
128 浏览

amazon-web-services - JMESPath 在树中下降以进行过滤

我想要达到的目标

我想使用describe-instances.

到目前为止我尝试了什么

aws ec2 describe-instances --filters "Name=tag:Backup,Values=True" --query 'Reservations[].Instances[].{Name: Tags[?Key==`Name`].Value | [0], Id: InstanceId, Block: BlockDeviceMappings[?DeviceName==RootDeviceName].Ebs.VolumeId, Test: RootDeviceName}'

什么不工作

几件事:

  1. Ebs.VolumeId不是 的直系后裔DeviceName,是的后裔BlockDeviceMappings
  2. RootDeviceName不是 的后代BlockDeviceMappings

因此,当我尝试拉动RootDeviceName并相应地搜索时VolumeId,我得到一个空白字段(块:用于测试,与案例无关)。

前 2 个字段是正确的。

提前致谢!

0 投票
2 回答
2153 浏览

amazon-web-services - AWS CLI 命令/JMESPATH 查询问题

你们中的任何人都可以帮我找出 CLI 命令 /JMESPATH 查询中的问题 - “什么不起作用?

下面给出的 PS JSON 输出是有效的,您可以使用输出在 JMESPATH.org 上测试其中的 JMESPATH 查询部分

什么有效?

1) aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[]
2) aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[].FromPort
3)aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[].IpProtocol

什么不工作?

1) aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?IpProtocol=='tcp'].IpProtocol
2)aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?FromPort=='22'].FromPort

JSON 输出

预期/实际结果

aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?IpProtocol=='tcp'].IpProtocol

结果

预期 - tcp,实际 - 不返回结果

aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?FromPort=='22'].FromPort

结果

预期 - 22,实际 - 不返回结果