python -m json.tool中文亂碼問題

我們在bash中可以通過python -m json.tool將json字符串格式化,以易於閱讀的縮進方式輸出到控制檯上。如:

echo '{"key1":"value1","key2":{"key3":"value3","key4":"value4"}}' | python -m json.tool
{
    "key1": "value1",
    "key2": {
        "key3": "value3",
        "key4": "value4"
    }
}

如果json字符串中包含了中文字符,python會以unicode格式顯示,不易閱讀。

echo '{"key1":"value1","key2":{"key3":"張三","key4":"李四"}}' | python -m json.tool
{
    "key1": "value1",
    "key2": {
        "key3": "\u5f20\u4e09",
        "key4": "\u674e\u56db"
    }
}

解決這個問題的辦法是修改json.tool程序,該程序存在於python系統庫安裝路徑下的json/tool.py。

find / -name tool.py
/usr/lib64/python2.7/json/tool.py

json.dump方法中增加參數ensure_ascii=False,即讓json.tool程序不強行保證json的內容都轉義爲ascii編碼,中文原樣輸出即可。

vi /usr/lib64/python2.7/json/tool.py
        json.dump(obj, outfile, sort_keys=True,
                  indent=4, separators=(',', ': '))
# 改爲
        json.dump(obj, outfile, sort_keys=True,
                  indent=4, ensure_ascii=False, separators=(',', ': '))

現在可以正常輸出中文字符了。

echo '{"key1":"value1","key2":{"key3":"張三","key4":"李四"}}' | python -m json.tool
{
    "key1": "value1",
    "key2": {
        "key3": "張三",
        "key4": "李四"
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章