今天來看一個經常遇到的一個場景,將一串json串格式化,比如{"a":1,"b":2,"c":3,"d":4,"e":5}這段一樣,為什麼需要這樣做呢,像這段短的字符你看起來可能不費力氣,但是如果是常常的一串,甚至多個嵌套的情況下,如下面這個json文件裡面的內容,讓人看起來就很吃力了。
這時看起來很亂了,其實如果是對一段短的不帶中文json字符串,可以使用Python自帶的一個工具json.tool就可以了,比如上面一開始提到的那段json串,如下:
但是如果帶有中文的情況呢,我們先看看使用json.tool對我們上面的那個帶中文的json.file文件的處理效果,如下:
看到我用紅色畫的框框了吧,一開始我們的json裡面是有中文的,但是經過格式化之後中文被編碼了,所以這個格式化方式不是我們想要的,那麼要怎麼才能達到既能對json串進行格式化,又不對中文進行編碼呢。下面是我寫的一個方法。僅僅九行代碼就可以實現了!話不多說,直接上代碼,如下:
這裡針對中文亂碼的使用sys.setdefaultencoding('utf-8')來限制編碼的格式,而格式化採用Python自帶的json包裡面的dump函數實現,裡面的參數sort_keys是設置輸出是否按照[a-z]順序輸出。這裡主要是先要讀入一個json文件,然後賦予給一個變量,然後將該變量進行處理後寫到一個文件裡面。下面看看效果:
非常好,上述的結果正如我們所想要的那樣,不過這裡還是有不是很影響結果的就是即使sort_keys設置為false,但是輸出的結果裡面的字段還是不按照原來的順序輸出。如果大家有好的方法歡迎留言交流,好了,本次的分享到此結束。謝謝您閱讀!
May you share freely, never taking more than you give.
願你寬心與人分享,所取不多於你所施與。
閱讀更多 雲中牧歌 的文章