python自动格式化json文件的方法
本文实例讲述了python自动格式化json文件的方法。分享给大家供大家参考。具体如下:
这里主要实现将代码混乱的json文件格式化。
还有一小堆python常用算法代码
完整实例代码点击此处本站下载。
classJsonFormatter:
def__init__(self,intend=4,name=""):
self.name=name
self.intend=intend
self.stack=[]
self.obj=None
self.source=self.get_source(name)
self.prepare()
@staticmethod
defjson_str(s):
return'"'+s+'"'
@staticmethod
defget_source(name):
withopen(name,'r')asf:
return''.join(f.read().split())
defprepare(self):
try:
self.obj=eval(self.source)
except:
raiseException('Invalidjsonstring!')
defline_intend(self,level=0):
return'\n'+''*self.intend*level
defparse_dict(self,obj=None,intend_level=0):
self.stack.append(self.line_intend(intend_level)+'{')
intend_level+=1
forkey,valueinobj.items():
key=self.json_str(str(key))
self.stack.append(self.line_intend(intend_level)+key+':')
self.parse(value,intend_level)
self.stack.append(',')
self.stack.append(self.line_intend(intend_level-1)+'}')
defparse_list(self,obj=None,intend_level=0):
self.stack.append(self.line_intend(intend_level)+'[')
intend_level+=1
foriteminobj:
self.parse(item,intend_level)
self.stack.append(',')
self.stack.append(self.line_intend(intend_level-1)+']')
defparse(self,obj,intend_level=0):
ifobjisNone:
self.stack.append('null')
elifobjisTrue:
self.stack.append('true')
elifobjisFalse:
self.stack.append('false')
elifisinstance(obj,(int,long,float)):
self.stack.append(str(obj))
elifisinstance(obj,str):
self.stack.append(self.json_str(obj))
elifisinstance(obj,(list,tuple)):
self.parse_list(obj,intend_level)
elifisinstance(obj,dict):
self.parse_dict(obj,intend_level)
else:
raiseException('Invalidjsontype%s!'%obj)
defrender(self):
self.parse(self.obj,0)
res_file='good'+self.name
res=''.join(self.stack)
withopen(res_file,'w')asf:
f.write(res)
printres
if__name__=="__main__":
jf=JsonFormatter(name="json.txt")
jf.render()
希望本文所述对大家的Python程序设计有所帮助。