python自动格式化json文件的方法

时间:2021-09-25 03:51:01

本文实例讲述了python自动格式化json文件的方法。分享给大家供大家参考。具体如下:

这里主要实现将代码混乱的json文件格式化。

还有一小堆python常用算法代码

完整实例代码点击此处本站下载

  1. class JsonFormatter: 
  2.   def __init__(self,intend=4,name=""): 
  3.     self.name=name 
  4.     self.intend=intend 
  5.     self.stack=[] 
  6.     self.obj=None 
  7.     self.source=self.get_source(name) 
  8.     self.prepare() 
  9.   @staticmethod 
  10.   def json_str(s): 
  11.     return '"'+s+'"' 
  12.   @staticmethod 
  13.   def get_source(name): 
  14.     with open(name,'r') as f: 
  15.       return ''.join(f.read().split()) 
  16.   def prepare(self): 
  17.     try
  18.       self.obj=eval(self.source) 
  19.     except: 
  20.       raise Exception('Invalid json string!'
  21.   def line_intend(self,level=0): 
  22.     return '\n'+' '*self.intend*level 
  23.   def parse_dict(self,obj=None,intend_level=0): 
  24.     self.stack.append(self.line_intend(intend_level)+'{'
  25.     intend_level+=1 
  26.     for key,value in obj.items(): 
  27.       key=self.json_str(str(key)) 
  28.       self.stack.append(self.line_intend(intend_level)+key+':'
  29.       self.parse(value,intend_level) 
  30.       self.stack.append(','
  31.     self.stack.append(self.line_intend(intend_level-1)+'}'
  32.   def parse_list(self,obj=None,intend_level=0): 
  33.     self.stack.append(self.line_intend(intend_level)+'['
  34.     intend_level+=1 
  35.     for item in obj: 
  36.       self.parse(item,intend_level) 
  37.       self.stack.append(','
  38.     self.stack.append(self.line_intend(intend_level-1)+']'
  39.   def parse(self,obj,intend_level=0): 
  40.     if obj is None: 
  41.       self.stack.append('null'
  42.     elif obj is True: 
  43.       self.stack.append('true'
  44.     elif obj is False: 
  45.       self.stack.append('false'
  46.     elif isinstance(obj,(int,long,float)): 
  47.       self.stack.append(str(obj)) 
  48.     elif isinstance(obj,str): 
  49.       self.stack.append(self.json_str(obj)) 
  50.     elif isinstance(obj,(list,tuple)): 
  51.       self.parse_list(obj,intend_level) 
  52.     elif isinstance(obj,dict): 
  53.       self.parse_dict(obj,intend_level) 
  54.     else
  55.       raise Exception('Invalid json type %s!' % obj) 
  56.   def render(self): 
  57.     self.parse(self.obj,0) 
  58.     res_file='good'+self.name 
  59.     res=''.join(self.stack) 
  60.     with open(res_file,'w') as f: 
  61.       f.write(res) 
  62.     print res 
  63. if __name__=="__main__"
  64.   jf=JsonFormatter(name="json.txt"
  65.   jf.render() 

所述对大家的Python程序设计有所帮助。