问题标签 [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 回答
785 浏览

python - 是否有适用于 Windows 10 的 JMESPath 终端?

我已经在我的 Windows 10 机器上安装了 python 3.5.2。我还通过在 Windows 命令行上使用以下命令安装了 JMESPath 终端:

点安装 jmespath 终端

一切顺利,安装成功。

但是当我输入以下内容时:jpterm

它说“jpterm”未被识别。

我是否遗漏了某些东西,或者上面的 pip 命令仅适用于非 Windows 机器?

0 投票
1 回答
20880 浏览

json - 按内容选择项目的ansible json-query路径

有谁知道在下面的示例 JSON 中可以使用什么 json-query 过滤器来选择 Tigger 的食物?JSON 是大型且相对复杂的 AWS blob 的简化替代品。

一些背景知识:我很高兴地发现 Ansible 有一个 json-query 过滤器。鉴于我试图从 AWS JSON blob 中选择一个元素,这看起来好像正是我所需要的。但是我很快就遇到了麻烦,因为 AWS 对象有标签,我需要按标签选择项目。

我尝试了等效Foods[Tags[(Key='For') & (Value='Tigger')]]和类似的选择器路径,但没有设法让它工作。使用独立的 json-query 库,例如https://www.npmjs.com/package/json-query我可以使用该parent属性,但这似乎不在 Ansible 中,除了偏离核心思想之外json 查询。

回避这个问题并使用 jsonpath 选择器可能会更好。jsonpath 类似于 json-query,是从 xpath 翻译而来的。

参考

0 投票
1 回答
4375 浏览

jmespath - 根据多个键/值对的存在过滤输出

使用 JMESPath,是否可以根据输入中是否存在多个键/值对来过滤输出?

从下面的示例 JSON 中,我想做的是仅提取包含这些键/值对的对象Tags-

环境 / ABC
项目 / Project2

我能得到的最接近的是选择一个匹配的标签,但我也需要对象的其余部分,我还需要匹配另一个键/值对 -

这是一些示例 JSON 输入 -

这是我需要的输出 -

0 投票
4 回答
13647 浏览

json - 按属性过滤对象并使用 jmespath 中的键进行选择

我正在尝试根据子属性的值过滤jmespath中对象的属性,并且只想包含子属性设置为特定值的那些属性。

基于此示例数据:

我想获得一个具有启用该功能的所有属性的对象。

我想我可以使用这个 jmespath 查询来过滤property. enabled设置为 true 的对象。不幸的是,它似乎不起作用,而是返回一个空数组。

*.feature.enabled*[feature.enabled]仅返回布尔值而无需任何上下文。

即使*[?feature.enabled==true]可以工作,它也只是属性值的数组,但我也需要键(ac)。有没有办法在 jmespath 中实现这一点?

这都是 ansible playbook 的一部分,所以肯定有一种方法可以以不同的方式(Jinja2 模板或自定义插件)实现选择,但我想尝试 jmespath 并且认为它应该能够完成这样的任务。

0 投票
0 回答
591 浏览

php - 在特定日期之后从 AWS Bucket 获取所有对象键?

我目前正在使用 AWS PHP SDK 的最新版本 (V3)。我想从最近 X 天的存储桶中获取所有对象键。我正在尝试使用此处描述的搜索功能,它使用 JMESPath 表达式。

这条评论似乎很有希望,但是当我尝试以下操作时:

我什么也没得到,即使我有比这个日期更新的对象。但是,当我尝试时,例如:

它似乎有效,我得到了预期的结果。我的键是一般格式20170120-211752-24-file.csv,所以我想我可以去掉第一个连字符之前的日期,循环遍历所有键,然后比较,但理想情况下我不想拉潜在的数千个对象并在之后这样做搜索。

有任何想法吗?

0 投票
1 回答
4870 浏览

jmespath - JmesPath 找到不存在的地方

以下 JmesPath 表达式查找已标记为团队的实例:

您知道如何查找未标记为团队的实例吗?

我努力了:

提前谢谢了!

样本输入:

0 投票
2 回答
7607 浏览

amazon-web-services - 使用 jmespath 按日期排序

使用 json 输出,例如:

如何返回按 LastModified 排序的两个最新函数?

0 投票
0 回答
2317 浏览

amazon-web-services - 将 Amazon S3 对象 LastModified 列时区从 UTC 转换为 EST

我正在使用 JMESPath 查询根据 LastModified 日期从 S3 对象中过滤掉文件。S3 LastModified 日期是 UTC,所以我必须转换为 EST。

JSMEPath Query 中是否有可以从 UTC 转换为 EST 的函数?

我的查询是:

0 投票
1 回答
1757 浏览

ansible - 如何将 Ansible 变量传递给 JMESPath 查询?

鉴于以下剧本:

我想将 ansible 中定义的变量传递bar: ['dd','ee']给 jmes_path 查询,例如"[?a == 'cc' && contains ( {{bar}} ,b)]". 不幸的是,这不起作用,脚本失败。

致命的:[本地主机]:失败!=> {“failed”:true,“msg”:“字段'args'的值无效([]),无法转换为dict。错误是:期望:逗号,得到:文字:解析错误在第 28 列,标记 \"dd\" (LITERAL),用于表达式:\n\"[?a == 'cc' && contains ( [u'dd', u'ee'] ,b)]\"\ n ^\n\n错误似乎出现在“/home/vagrant/testnew/lieferschein-deployment/stack.yml”中:第 16 行第 6 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。 \n\n违规行似乎是:\n\n tasks:\n - debug:\n ^ here\n"}

但是,在查询本身中定义列表,像 inline 一样"[?a == 'cc' && contains (['dd','ee'],b)]",它可以正常工作

是否可以将 Ansible 变量放入查询中,如果可以,如何?

0 投票
1 回答
1800 浏览

jmespath - Azure CLI jmespath 查询

对于下面的 JSON,我正在尝试获取特定资源类型的位置列表。

这个命令:

最后给了我示例输出(太多了,无法包括所有)。然后如何查询特定的资源类型?我尝试了以下方法,但它不起作用:

第一个命令的示例输出: