es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo recorrer los registros de un archivo json en Ansible.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy nuevo en Ansible, solo me pregunto cómo podría recorrer registros json con Ansible. Tengo un archivo json con los siguientes datos:

{
    "map": {
        "entry": [
            {
                "string": [
                    "6a032ae5-3eed-4d20-a9ef-ccbd88118c47"
                ]
            },
            {
                "string": [
                    "27617813-e268-4c94-b539-3550a3a8501a"
                ]
            },
            {
                "string": [
                    "b39b10fb-0538-42d7-96fc-553eee9c7ded"
                ]
            }
        ]
    }
}

y tengo el siguiente código en Ansible para recorrer el archivo json:

- name: Inicializar variables
  set_fact:
    NEW_CODE_TEMPLATES_IDS: "{{ lookup('file', 'code_template_map/codeTemplate.json') | json_query('map.entry[*].item') }}"


- name: Identificación del código de la plantilla
  debug:
    var: NEW_CODE_TEMPLATES_IDS

Espero que la salida sea como la siguiente:

6a032ae5-3eed-4d20-a9ef-ccbd88118c47
27617813-e268-4c94-b539-3550a3a8501a
b39b10fb-0538-42d7-96fc-553eee9c7ded

Pero por alguna razón, esto no parece estar funcionando para mí. ¿Alguien sabe por qué?

Tags:  

Answer

  1. Avatar for davy.ai

    Para recorrer un registro JSON con Ansible, puede usar el filtro json_query. El filtro json_query le permite consultar una estructura JSON utilizando la sintaxis JMESPath.

    En el código provisto, puede modificar la tarea set_fact de la siguiente manera:

    - name: Inicializar variables
      set_fact:
        NEW_CODE_TEMPLATES_IDS: "{{ lookup('file', 'code_template_map/codeTemplate.json') | from_json | json_query('map.entry[*].string[0]') }}"
    

    Aquí, se utiliza el filtro from_json para convertir los datos JSON a un diccionario de Python. Luego, se utiliza el filtro json_query para extraer los valores de los campos string dentro de cada elemento entry.

    La tarea debug debe permanecer igual:

    - name: id de la plantilla de código
      debug:
        var: NEW_CODE_TEMPLATES_IDS
    

    Esto debería imprimir el resultado esperado:

    6a032ae5-3eed-4d20-a9ef-ccbd88118c47
    27617813-e268-4c94-b539-3550a3a8501a
    b39b10fb-0538-42d7-96fc-553eee9c7ded
    

Comments are closed.