JSON描述的列表转换成为HTML表格类(我觉得编码风格已经好很多了)
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import json 5 6 7 SRC_TABLE = { 8 "装修快帐":{"transType":"交易类型", 9 "transDate":"交易日期", 10 "currency ":"交易币种", 11 "inAcct":u"资金流入帐户", 12 "inAmount":"流入金额", 13 "outAcct":"资金流出账户", 14 "outAmount":"流出金额", 15 "memo":"备注", 16 "category":"收支项目", 17 "createTime":"创建时间" 18 }, 19 } 20 21 class JSON2TableBuilder: 22 #----------------------------------- 23 def __init__(self,jsonData,src): 24 self._jsonData = jsonData 25 self._rowList = [self._getDescriptionRow(src)] 26 self._rowList = self._rowList + self._convertToList() 27 28 #----------------------------------- 29 def _getDescriptionRow(self,src): 30 row = None 31 if SRC_TABLE.has_key(src): 32 row = SRC_TABLE[src] 33 return row 34 else: 35 raise Exception("error: source error") 36 37 #----------------------------------- 38 def outputHtml(self): 39 index = 0 40 html = "" 41 count = len(self._rowList) 42 while index < count: 43 html += self.genRowHtml(index) 44 index = index + 1 45 return '<table class="qbj_json_table">\n'+html+'</table>\n' 46 47 #----------------------------------- 48 def genRowHtml(self,index): 49 row = self._rowList[index] 50 cellValues = row.values() 51 s = "" 52 for value in cellValues: 53 s += "<td>"+self._sprintf(value)+"<td>" 54 return "<tr>"+s+"<tr>\n" 55 56 #----------------------------------- 57 '''将json数据转成对象并检测''' 58 def _convertToList(self): 59 data = json.loads(self._jsonData) 60 if type(data) not in (list,dict): 61 raise Exception("error: input error") 62 63 if type(data) is dict: 64 data = [data] 65 return data 66 67 '''将其他类型转换为string''' 68 def _sprintf(self,field): 69 if type(field) in (int,float): 70 field = str(field) 71 72 if type(field) is unicode: 73 field = field.encode('utf8') 74 75 if len(field)==0: 76 field = " " 77 78 return field 79 80 '''测试入口''' 81 if __name__ == "__main__": 82 s = ''' 83 [ 84 {"transType":"收入","transDate":"2011-11-09","currency":"人民币", 85 "inAcct":"活期账户","inAmount":1000.0,"outAcct":"","outAmount":0,"memo":"10 月份工资收入", 86 "category":"工薪","createTime":"2011-11-09 03:02:34.000"}, 87 {"transType":"收入","transDate":"2011-12-09","currency":"人民币", 88 "inAcct":"现金","inAmount":1000.0,"outAcct":"","outAmount":0,"memo":"11 月份工资收入", 89 "category":"工薪","createTime":"2011-12-09 13:22:01.000"} 90 ] 91 ''' 92 93 builder = JSON2TableBuilder(s,"装修快帐") 94 s2 = builder.outputHtml() 95 print s2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述