【问题标题】:Filter the output in json format in ansible playbook在ansible playbook中过滤json格式的输出
【发布时间】:2019-05-29 14:42:00
【问题描述】:

我有一个json文件如下

"data": [

   {
      "name": "first",
      "foo": "123",
      "item": "monday"
  },

  {
      "name": "second",
      "foo": "456",
      "item": "tuesday"
      },

      { 
      "name": "third",
      "foo": "789",
      "item": "wednesday"}

  ]
}

现在我需要 foo 在我的 ansible playbook 中的星期三时的值

我使用了下面的 json 查询,但没有得到想要的输出

- name: Get foo value.
  set_fact:
     foo_value: "{{ (json.stdout | from_json).data | map(attribute='foo') | list }}"

当我提到item : wednesday 时,我需要foo_value : 789,请让我知道我做错了什么

【问题讨论】:

    标签: json ansible


    【解决方案1】:

    当我提到item : wednesday 时,我需要foo_value : 789,请让我知道我做错了什么

    你做错的第一件事是在你的表达中没有提到item;也就是说,你要找的是selectattr

    set_fact:
      foo_value: "{{ (json.stdout | from_json).data
        | selectattr('item', 'eq', 'wednesday')
        | map(attribute='foo') | list }}"
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多