这本ansible playbook 很管用

---
- hosts: localhost
  gather_facts: False

  vars:
    jq: "[?contains(name, 'Pizza')]"
    json: |
       [{
            "name": "Ted's Sub Shop - 720895714701",
            "templateid": "24632"
        },
        {
            "name": "Ted's Pizza - 720895714702",
            "templateid": "24663"
        }]

  tasks:
  - name: DEBUG
    debug:
      msg: "{{ json | from_json | json_query(jq) }}"

它返回以下内容

ok: [localhost] => {
    "msg": [
        {
            "name": "Ted's Pizza - 720895714702",
            "templateid": "24663"
        }
    ]
}

我需要更进一步,当name的值包含Pizza时,我需要它只返回末尾的12位数字.因此,返回输出将如下所示

ok: [localhost] => {
    "msg": "720895714702"
}

思想?

推荐答案

你可以试试

- name: testplaybook jinja2
  hosts: localhost
  gather_facts: no
  vars:
    json: |
       [{
            "name": "Ted's Sub Shop - 720895714701",
            "templateid": "24632"
        },
        {
            "name": "Ted's Pizza - 720895714702",
            "templateid": "24663"
        }]
  tasks:
    - name: DEBUG
      debug:
        msg: "{{ json | from_json | selectattr('name', 'contains' , 'Pizza') 
                                  | map(attribute='name') 
                                  | map('regex_replace', '^.*?(\\d*)$', '\\1')}}" 

结果:

ok: [localhost] => {
    "msg": [
        "720895714702"
    ]
}

Json相关问答推荐

如何使用JQ有条件 Select 值

kotlinx-serialization:如何将具有不同类型对象的JsonArray转换为同一个Class

JSON:将项';S键/名称移动到属性中,并使用JQ将其转换为数组

在PowerShell中,如何获取数据对所在的JSON对象的名称

褐煤面积图中的分选问题

jq如何合并两个json对象

GitHub Pages无法正确显示我的项目

将JSON行转换为TSV格式, for each 数组项生成单独的行

如何在不使用 Newtonsoft.JSON 的情况下序列化/反序列化

Golang 解组行为:字段过多?

ORA-01422: 精确提取返回的行数超过了与 json 对象组合的请求数

MarkLogic REST 资源 API - 仅使用一个 POST 请求修补多个文档

如何在 Dart 中与多个 map (字典)相交

按 JSON 数据类型 postgres 排序

如何使用 Jackson 重命名 JSON 序列化中的根键

如何使用 LWP 发出 JSON POST 请求?

如何在 Django JSONField 数据上聚合(最小/最大等)?

将循环 struct 转换为 JSON - 有什么方法可以找到它抱怨的字段?

字符串格式 JSON 字符串给出 KeyError

从 JSON 到 JSONL 的 Python 转换