十行代碼就能實現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.

  • 願你寬心與人分享,所取不多於你所施與。


分享到:


相關文章: