我有这样一个json文件:
[
{
"as": 65011,
"peers": {
"swp1": {
"hostname": "Spine-01",
"remoteAs": 65001
},
"swp2": {
"hostname": "Spine-02",
"remoteAs": 65001
}
},
"routerId": "10.0.0.3",
"peerCount": 2
}
]使用Jinja2,我希望以txt格式转换它,如下所示:
Peers :
Interface : swp1
Hostname : Spine-1
AS : 65001
Interface : swp2
Hostname : Spine-2
AS : 65001我使用jsonpath来验证它。我使用的模板如下:
{% for item in get_devices.json.results -%}
Peers :
Interface : {{ item.peers.*~ }}
Hostname : {{ item.peers.[*].hostname }}
AS : {{ item.peers.[*].remoteAs }}
{% endfor %}但是,由于*、[]和~字符,这会导致错误。我应该做哪些改变来正确地运行它并产生适当的输出?
发布于 2022-02-14 22:21:26
无论如何,Jinja2与JSONPath无关,因此您不能在这里使用它的语法。
不过,您想要达到的目标是很容易实现的,有第二个for循环到iterate over the peers dictionary。
{% for item in get_devices.json.results -%}
Peers :
{%- for interface, peer in item.peers.items() %}
Interface : {{ interface }}
Hostname : {{ peer.hostname }}
AS : {{ peer.remoteAs }}
{%- endfor %}
{% endfor %}生产:
Peers :
Interface : swp1
Hostname : Spine-01
AS : 65001
Interface : swp2
Hostname : Spine-02
AS : 65001https://stackoverflow.com/questions/71113959
复制相似问题