python写json文件自动换行_python自动格式化json文件

这个代码片段展示了如何使用 Python 类 `JsonFormatter` 来格式化 JSON 文件,使其具有自动换行和缩进。类中包含了解析不同类型的 JSON 数据结构的方法,并提供了读取、格式化和保存到新文件的功能。
摘要由CSDN通过智能技术生成

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

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,intend_level=0):

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

intend_level+=1

for item in obj:

self.parse(item,')

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()

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值