通过jinja2模板生成json文件内容的一个例子
在生成acl_rule的时候,需要根据j2模板来生成具体的json格式内容。下面这个例子涉及到了一些需要注意的点
先给实现代码
$ cat add_acl_rule.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-from jinja2 import Template
import jsontmpl_str=\
'''{"ACL_RULE":{{% for ACL_RULE in ACL_RULES %}"EF_INGRESS|{{ACL_RULE['NAME']}}": {"MIRROR_INGRESS_ACTION": "{{SESSION_NAME}}",{% for key,value in ACL_RULE['CONTENT'].items() %}{% if value is string %}"{{key}}": "{{value}}"{% if not loop.last %},{% endif %}{% elif value is sequence %}"{{key}}":[{% for item in value %}"{{item}}"{% if not loop.last %},{% endif %}{% endfor %}]{% if not loop.last %},{% endif %}{% endif %}{% endfor %}}{% if not loop.last %},{% endif %}{% endfor %}}
}'''if __name__ == '__main__':acl_rule1 = {'NAME':'RULE_1','CONTENT':{'PRIORITY':'9999','SRC_IP':'10.0.0.2/32','IN_PORT':['eth1','eth2']}}acl_rule2 = {'NAME':'RULE_2','CONTENT':{'PRIORITY':'9998','DST_IP':'10.0.0.3/32','IN_PORT':['eth1','eth2']}} acl_rules = [acl_rule1,acl_rule2]acl_rule_templ = Template(tmpl_str)acl_rule_content = acl_rule_templ.render(SESSION_NAME='ABCD',ACL_RULES=acl_rules)print acl_rule_content
运行效果
$ python add_acl_rule.py
{"ACL_RULE":{"EF_INGRESS|RULE_1": {"MIRROR_INGRESS_ACTION": "ABCD","PRIORITY": "9999","SRC_IP": "10.0.0.2/32","IN_PORT":["eth1","eth2"]},"EF_INGRESS|RULE_2": {"MIRROR_INGRESS_ACTION": "ABCD","PRIORITY": "9998","DST_IP": "10.0.0.3/32","IN_PORT":["eth1","eth2"]}}
}
其中涉及到的点包括
- 传入的key/value,其中的value有可能是string,也可能是sequence(或叫list),需要先判断
- json文件同级的最后一项不需要逗号,统一用下面这个来判断
{% if not loop.last %},{% endif %}
- 如果打印的结果多了一些不期望的换行,需要核对一下末班中哪里多了换行,改为紧接着上文
体验下来,用jinja2定义模板,就像按照一定的规则做填字游戏,多试几次就熟悉了。
加个jinja2的文档链接,戳这里。
通过jinja2模板生成json文件内容的一个例子相关推荐
- python按模板生成html_python 利用jinja2模板生成html代码实例
这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下from jinja2 imp ...
- qt先生成json文件后程序启动时读取json文件在一组数据模拟下正常,换一组数据就出现乱码
提要 程序编号后自己模拟的数据程序在生成和解析json时都正常,但是换了一组数据,生成的json文件中部分中文乱码,且出现json文件的格式被混乱的现象. 效果 上述出现的不正确的json文件,如下: ...
- JAVA 根据模板生成doc文件
JAVA 根据模板生成doc文件 需求 根据模板生成对应的doc文档,文档内容动态填充. 实现 1.将doc模板转换为ftl文件,放入项目中 1.1 首先将模板另存为xml文件 1.2 更改xml文件 ...
- Java根据模板生成pdf文件并导出
原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...
- EasyPoi通过模板生成Excel文件
之前用easypoi实现过导出简单的excel文件,最近又有需求导出固定格式的excel文件,所以在网上搜索学习了一下,现将学会后写的demo记录一下方便以后回顾. 首先照例引入maven依赖(这里版 ...
- freemarker 模板生成pdf文件并下载
利用freemarker 模板生成pdf文件,通过浏览器直接下载或生成文件到指定目录 1.pom.xml文件 <!--引入Freemarker的依赖--> <dependency&g ...
- 使用java生成json文件
需求:使用java代码生成一个json格式的文件,自定义相关内容 实现: 代码如下: package com.zt.posts.common.util; import lombok.extern.sl ...
- itextpdf通过pdf模板生成pdf文件
itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...
- java根据模板生成pdf文件并导出(iText)
java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...
最新文章
- Direct2D开发:Direct2D 和 GDI 互操作性概述
- linux网站目录大小写,Linux服务器url区分大小写如何解决
- 图的m着色问题pascal程序
- n阶自相关matlab代码,随机信号及其自相关函数和功率谱密度的MATLAB实现.doc
- c#中的Form.Show和Form.ShowDialog的区别
- dijkstra+priority_queue+vector
- mysql查询时有个字段是变量_MySQL UPDATE查询中ID最高且字段等于变量?
- 遥感数字图像处理-----第一章---数字图像基础
- velocity 语法
- swagger注释API :@ApiModel
- ViewGroup详解
- mysql数据库下订单功能项目_订单功能模块设计与实现
- JELLY技术周刊 Vol.24 -- 技术周刊 · 实现 Recoil 只需百行代码?
- Oracle中的sql语句
- 建站的原型图是什么意思?
- HBase2.4.8详细教程(一)HBase环境搭建
- 深入springboot怎么启动tomcat
- “梅西”式核心员工,正在摧毁你的团队
- 多分类-- ROC曲线和AUC值
- 网站关键词优化如何优化大量关键词?