如何在Ansible中通过循环拆分哈希表的逗号分隔字段值
完全可以通过Ansible实现该需求,你可以通过循环遍历每个字典元素,配合Ansible内置的字符串拆分过滤器完成格式转换,以下是可直接运行的Playbook示例:
--- - name: 转换JSON字段格式 hosts: localhost gather_facts: no vars: # 原始输入数据,已修正原示例JSON的语法疏漏(给four补充双引号) original_data: [{"x": "one", "y": "two,three"}, {"x": "four", "y": "five,six"}] tasks: - name: 遍历处理每个字典元素 set_fact: processed_data: "{{ processed_data | default([]) + [ { 'x': [item.x], 'y': item.y.split(',') } ] }}" loop: "{{ original_data }}" - name: 打印处理后的结果 debug: var: processed_data
运行上述Playbook后,processed_data变量的输出就和你要求的目标格式完全一致:
[{"x": ["one"], "y": ["two", "three"]}, {"x": ["four"], "y": ["five", "six"]}]
如果你不想用显式循环,也可以通过map+json_query过滤器批量处理元素,写法更简洁:
- name: 用过滤器批量处理数据 set_fact: processed_data: >- {{ original_data | map('json_query', '{"x": [x], "y": split(`\`,`, y)}') | list }}
内容的提问来源于stack exchange,提问作者BiscuitSwimmer
相关产品推荐
相关产品推荐

