Json Jinja2-列表中的缩进和递归循环

Json Jinja2-列表中的缩进和递归循环,json,ansible,jinja2,Json,Ansible,Jinja2,查询主要与Jinja2相关,通过循环递归并将元素添加到递归JSON类型格式中 例如,获得了一个管道分隔列表/数据,它是一个“管道分隔层次结构”,如下所示 层次结构可以是任何级别,我希望通过使用Jinja2模板获得基于层次结构的JSON格式 我试过的是 {%for pipe_separated_hierarchy.split(“|”)%%中的项 “obj{{{loop.index}}”:{ “{{item}}”:{ “我的描述”{loop.index}, “obj{{{loop.index}}”:

查询主要与Jinja2相关,通过循环递归并将元素添加到递归JSON类型格式中

例如,获得了一个管道分隔列表/数据,它是一个“管道分隔层次结构”,如下所示

层次结构可以是任何级别,我希望通过使用Jinja2模板获得基于层次结构的JSON格式

我试过的是

{%for pipe_separated_hierarchy.split(“|”)%%中的项
“obj{{{loop.index}}”:{
“{{item}}”:{
“我的描述”{loop.index},
“obj{{{loop.index}}”:{
#不确定如何循环.index&item?
}
{%endfor%}
我正在寻找输出

    "obj_1": {
      "World": {
        "obj_2": {
          "North_America": {
            "obj_3": {
              "USA": {
                "obj_4": "Texas"
                }
              }
            }
          }
        }
      }
你知道如何在列表中循环,同时保持旁边的计数和缩进吗?

例如

-hosts:localhost
变量:
l1:
-世界|北美|美国|德克萨斯
-世界|欧洲|英国|英国|伦敦
-世界|澳大利亚
任务:
-调试:
var:_out | from_yaml
循环:“{l1}}”
变量:
_列表:“{item.split('|')}”
_len:{{{U列表|长度}}”
_输出:|
{范围(_len | int)%}
{{'obj|indent(宽度=(i*4),first=true)}{{{i+1}}:
{{{u list[i]| indent(width=(i*4),first=true)}{{:“if not loop.last else”“}
{%endfor%}
给予

ok:[localhost]=>(item=World |北美|美国|德克萨斯)=>{
“_out | from_yaml”:{
“obj_1”:{
“世界”:{
“obj_2”:{
“北美”:{
“obj_3”:{
“美国”:{
“obj_4”:“德克萨斯州”
}
}
}
}
}
}
},
“ansible_loop_var”:“项目”,
“项目”:“世界|北美|美国|德克萨斯”
}
确定:[本地主机]=>(项目=世界|欧洲|英国|英国|伦敦)=>{
“_out | from_yaml”:{
“obj_1”:{
“世界”:{
“obj_2”:{
“欧洲”:{
“obj_3”:{
“英国”:{
“obj_4”:{
“英格兰”:{
“obj_5”:“伦敦”
}
}
}
}
}
}
}
}
},
“ansible_loop_var”:“项目”,
“项目”:“世界|欧洲|英国|英国|伦敦”
}
确定:[localhost]=>(item=World|Australia)=>{
“_out | from_yaml”:{
“obj_1”:{
“世界”:{
“obj_2”:“澳大利亚”
}
}
},
“ansible_loop_var”:“项目”,
“项目”:“世界|澳大利亚”
}

您试图在此处创建无效的json,因此我们可能可以回答您的问题,但这仍然是无效的,例如,
{“世界”:{“我的描述”\u obj4,“德克萨斯州”}
将是无效的,因为无论是
my_description\u obj4
还是
texas
都没有密钥存储库,上面是我输入的示例。但是思想过程是创建一个递归循环。只是想把这个概念放进去。谢谢你,伙计。工作得很有魅力
    "obj_1": {
      "World": {
        "obj_2": {
          "North_America": {
            "obj_3": {
              "USA": {
                "obj_4": "Texas"
                }
              }
            }
          }
        }
      }