我們在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": "李四"
}
}