json - 使用 Ansible 查找 JSON 中的值,而无需知道它在哪里

标签 json parsing ansible

我正在尝试找到一种方法来解析下面的 json 并获取所有具有 "type": "location" 的项目的 city 列表。挑战是我并不总是知道关键名称,例如 usjohnlocation1 以及 下面示例中的 >location2。我尝试使用 json_query 和 regex_search 但没有成功。

{
    "client": {
        "us": {
            "john": {
                "job": {
                    "type": "job",
                    "job": "waiter"
                },
                "location1": {
                    "type": "location",
                    "address": {
                        "street": "Main St",
                        "city": "Seattle"
                    }
                },                
                "location2": {
                    "type": "location",
                    "address": {
                        "street": "2nd ave",
                        "city": "New York"
                    }
                }
            }
        }
    }
}

最佳答案

给定变量my_data以下任务

    - debug:
        msg: "{{ my_data|
                 json_query(query1)|
                 flatten|
                 json_query(query2)
                 }}"
      vars:
        query1: "*.*.*.*"
        query2: "[?type=='location'].address.city"

给出列表

    "msg": [
        "Seattle",
        "New York"
    ]

很可能这些查询可以串联。

关于json - 使用 Ansible 查找 JSON 中的值,而无需知道它在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63832681/

相关文章:

javascript - 数组到动态函数: Use eval or not?

regex - 正则表达式找不到任何匹配项来使用 ansible.builtin.replace 替换文本

ansible - 在 Ansible Playbook 中定义常量变量

json - jq 如何获取所有值并用于脚本参数

javascript - AJAX 到 asmx (VB) web 方法 - 带参数的 GET

javascript - 某些库中是否有任何 JavaScript 函数可以将简单的 wiki 标记(以多行字符串形式给出)转换为 html?

Java XML : ClassCastException DeferredTextImpl

Ansible Tower 暴露密码

ios - 具有反应性 objective-c 的 NSManagedObject

php - 使用php从xml中提取信息