【记录】json输出美化
json写入本地文件,用的json.dump直接写或者json.dumps然后写字符串;这两种方法写完之后发现字符串中的中文都变成ASCII码,难看!
a = {'name': '吕布奉先', 'age':42, '武器':"方天画戟", "坐骑":"赤兔马"}
import json
json.dump(a, open('a.json', 'w', encoding='utf8'))
{"name": "\u5415\u5e03\u5949\u5148", "age": 42, "\u6b66\u5668": "\u65b9\u5929\u753b\u621f", "\u5750\u9a91": "\u8d64\u5154\u9a6c"}
json.dump()和dumps()中有参数 ensure_ascii=False
确保输出不是ascii 码,美观了一点点!
a = {'name': '吕布奉先', 'age':42, '武器':"方天画戟", "坐骑":"赤兔马"}
import json
json.dump(a, open('a.json', 'w', encoding='utf8'), ensure_ascii=False)
{"name": "吕布奉先", "age": 42, "武器": "方天画戟", "坐骑": "赤兔马"}
还不够,这里显示一行,希望每一个key-value 都在不同的行显示;indent=4
参数可以做到,indent表示缩放,数字为缩放大小,可调节;
a = {'name': '吕布奉先', 'age':42, '武器':"方天画戟", "坐骑":"赤兔马"
,"s":[1,2,3,4,5],
'y':{1:2,3:4}}
import json
json.dump(a, open('a.json', 'w', encoding='utf8'), ensure_ascii=False, indent=1)
{
"name": "吕布奉先",
"age": 42,
"武器": "方天画戟",
"坐骑": "赤兔马",
"s": [
1,
2,
3,
4,
5
],
"y": {
"1": 2,
"3": 4
}
}