十行代码就能实现json文件的格式化!

今天来看一个经常遇到的一个场景,将一串json串格式化,比如{"a":1,"b":2,"c":3,"d":4,"e":5}这段一样,为什么需要这样做呢,像这段短的字符你看起来可能不费力气,但是如果是常常的一串,甚至多个嵌套的情况下,如下面这个json文件里面的内容,让人看起来就很吃力了。

十行代码就能实现json文件的格式化!

jsonfile

这时看起来很乱了,其实如果是对一段短的不带中文json字符串,可以使用Python自带的一个工具json.tool就可以了,比如上面一开始提到的那段json串,如下:

十行代码就能实现json文件的格式化!

test

但是如果带有中文的情况呢,我们先看看使用json.tool对我们上面的那个带中文的json.file文件的处理效果,如下:

十行代码就能实现json文件的格式化!

jsonfile

看到我用红色画的框框了吧,一开始我们的json里面是有中文的,但是经过格式化之后中文被编码了,所以这个格式化方式不是我们想要的,那么要怎么才能达到既能对json串进行格式化,又不对中文进行编码呢。下面是我写的一个方法。仅仅九行代码就可以实现了!话不多说,直接上代码,如下:

十行代码就能实现json文件的格式化!

fmt

这里针对中文乱码的使用sys.setdefaultencoding('utf-8')来限制编码的格式,而格式化采用Python自带的json包里面的dump函数实现,里面的参数sort_keys是设置输出是否按照[a-z]顺序输出。这里主要是先要读入一个json文件,然后赋予给一个变量,然后将该变量进行处理后写到一个文件里面。下面看看效果:

十行代码就能实现json文件的格式化!

result

非常好,上述的结果正如我们所想要的那样,不过这里还是有不是很影响结果的就是即使sort_keys设置为false,但是输出的结果里面的字段还是不按照原来的顺序输出。如果大家有好的方法欢迎留言交流,好了,本次的分享到此结束。谢谢您阅读!


  • May you share freely, never taking more than you give.

  • 愿你宽心与人分享,所取不多于你所施与。


分享到:


相關文章: