简体   繁体   English

为什么 json_query 在 set_fact 中返回一个空字符串?

[英]Why does json_query return an empty string in a set_fact?

I tried to get metrics2 and metrics3 value like below:我试图获得metrics2和metrics3的值,如下所示:

- hosts: localhost

  tasks:
    - set_fact:
       param:
        - - {metrics1: A, metrics2: B, metrics3: C}
          - {metrics1: D, metrics2: E, metrics3: F}
          - {metrics1: G, metrics2: H, metrics3: I}
        - - {metrics1: J, metrics2: K, metrics3: L}
          - {metrics1: M, metrics2: N, metrics3: O}
          - {metrics1: P, metrics2: Q, metrics3: R}
      parseParam: "{{ param | json_query('[][].[metrics2, metrics3]') }}"

    - debug:
        var: parseParam

and the returned value is null:并且返回值为空:

"parseParam": ""

What should I do?我应该怎么办?

You won't be able to access param in the set_fact that defines it.您将无法访问定义它的param中的set_fact

A way around is to declare a variable local to that task, and use it:一种解决方法是声明该任务的本地变量,并使用它:

- set_fact:
    parseParam: "{{ _param | json_query('[][].[metrics2, metrics3]') }}"
    param: "{{ _param }}"
  vars:
    _param:
      - - {metrics1: A, metrics2: B, metrics3: C}
        - {metrics1: D, metrics2: E, metrics3: F}
        - {metrics1: G, metrics2: H, metrics3: I}
      - - {metrics1: J, metrics2: K, metrics3: L}
        - {metrics1: M, metrics2: N, metrics3: O}
        - {metrics1: P, metrics2: Q, metrics3: R}

If you don't need the param variable outside of the set_fact itself, you can even drop its assignation in a fact, of course.如果您不需要set_fact本身之外的param变量,当然,您甚至可以在事实中删除它的分配。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM