在生成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文件内容的一个例子相关推荐

  1. python按模板生成html_python 利用jinja2模板生成html代码实例

    这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下from jinja2 imp ...

  2. qt先生成json文件后程序启动时读取json文件在一组数据模拟下正常,换一组数据就出现乱码

    提要 程序编号后自己模拟的数据程序在生成和解析json时都正常,但是换了一组数据,生成的json文件中部分中文乱码,且出现json文件的格式被混乱的现象. 效果 上述出现的不正确的json文件,如下: ...

  3. JAVA 根据模板生成doc文件

    JAVA 根据模板生成doc文件 需求 根据模板生成对应的doc文档,文档内容动态填充. 实现 1.将doc模板转换为ftl文件,放入项目中 1.1 首先将模板另存为xml文件 1.2 更改xml文件 ...

  4. Java根据模板生成pdf文件并导出

    原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...

  5. EasyPoi通过模板生成Excel文件

    之前用easypoi实现过导出简单的excel文件,最近又有需求导出固定格式的excel文件,所以在网上搜索学习了一下,现将学会后写的demo记录一下方便以后回顾. 首先照例引入maven依赖(这里版 ...

  6. freemarker 模板生成pdf文件并下载

    利用freemarker 模板生成pdf文件,通过浏览器直接下载或生成文件到指定目录 1.pom.xml文件 <!--引入Freemarker的依赖--> <dependency&g ...

  7. 使用java生成json文件

    需求:使用java代码生成一个json格式的文件,自定义相关内容 实现: 代码如下: package com.zt.posts.common.util; import lombok.extern.sl ...

  8. itextpdf通过pdf模板生成pdf文件

    itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...

  9. java根据模板生成pdf文件并导出(iText)

    java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...

最新文章

  1. Direct2D开发:Direct2D 和 GDI 互操作性概述
  2. linux网站目录大小写,Linux服务器url区分大小写如何解决
  3. 图的m着色问题pascal程序
  4. n阶自相关matlab代码,随机信号及其自相关函数和功率谱密度的MATLAB实现.doc
  5. c#中的Form.Show和Form.ShowDialog的区别
  6. dijkstra+priority_queue+vector
  7. mysql查询时有个字段是变量_MySQL UPDATE查询中ID最高且字段等于变量?
  8. 遥感数字图像处理-----第一章---数字图像基础
  9. velocity 语法
  10. swagger注释API :@ApiModel
  11. ViewGroup详解
  12. mysql数据库下订单功能项目_订单功能模块设计与实现
  13. JELLY技术周刊 Vol.24 -- 技术周刊 · 实现 Recoil 只需百行代码?
  14. Oracle中的sql语句
  15. 建站的原型图是什么意思?
  16. HBase2.4.8详细教程(一)HBase环境搭建
  17. 深入springboot怎么启动tomcat
  18. “梅西”式核心员工,正在摧毁你的团队
  19. 多分类-- ROC曲线和AUC值
  20. 网站关键词优化如何优化大量关键词?

热门文章

  1. 一年之计在于春节之后的三个礼拜
  2. Forgotten Artefacts开启预售
  3. Fortify中文乱码 Audit Workbench
  4. redis写入mysql 使用redis做mysql缓存
  5. cmd命令删除文件夹或文件
  6. mybatis字符串比较
  7. 阿里云短信服务 发送短信验证码 区分业务场景
  8. 自定义指数衰减学习率函数
  9. mysql怎么查看字符集设置_mysql 设置查看字符集
  10. CSS3动画和3D动画