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

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

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

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

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

class JsonFormatter:

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

def json_str(s):

return '"'+s+'"'

@staticmethod

def get_source(name):

with open(name,'r') as f:

return ''.join(f.read().split())

def prepare(self):

try:

self.obj=eval(self.source)

except:

raise Exception('Invalid json string!')

def line_intend(self,level=0):

return '\n'+' '*self.intend*level

def parse_dict(self,obj=None,intend_level=0):

self.stack.append(self.line_intend(intend_level)+'{')

intend_level+=1

for key,value in obj.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)+'}')

def parse_list(self,obj=None,intend_level=0):

self.stack.append(self.line_intend(intend_level)+'[')

intend_level+=1

for item in obj:

self.parse(item,intend_level)

self.stack.append(',')

self.stack.append(self.line_intend(intend_level-1)+']')

def parse(self,obj,intend_level=0):

if obj is None:

self.stack.append('null')

elif obj is True:

self.stack.append('true')

elif obj is False:

self.stack.append('false')

elif isinstance(obj,(int,long,float)):

self.stack.append(str(obj))

elif isinstance(obj,str):

self.stack.append(self.json_str(obj))

elif isinstance(obj,(list,tuple)):

self.parse_list(obj,intend_level)

elif isinstance(obj,dict):

self.parse_dict(obj,intend_level)

else:

raise Exception('Invalid json type %s!' % obj)

def render(self):

self.parse(self.obj,0)

res_file='good'+self.name

res=''.join(self.stack)

with open(res_file,'w') as f:

f.write(res)

print res

if __name__=="__main__":

jf=JsonFormatter(name="json.txt")

jf.render()

希望本文所述对大家的Python程序设计有所帮助。

以上是 python自动格式化json文件的方法 的全部内容, 来源链接: utcz.com/z/330431.html

回到顶部