Python Json
Json模块提供了四个方法: dumps、dump、loads、load
dump && load
dump、load主要用来读写Json文件
# Writing JSON data
with open('data.json', 'w') as f:
json.dump(data, f)
# Reading data back
with open('data.json', 'r') as f:
data = json.load(f)
dumps && loads
dumps、loads主要用来处理字符串和字典
- dumps 将 Python数据(字典、字符串) 转换成 Json(字符串)
- loads 将 Json(字符串) 转换成 字典
data = {
'name': 'ACME',
'shares': 100,
'price': 542.23
}
dumps
json_str = json.dumps(data)
print('type : ', type(json_str), 'value : ', json_str)
# type : <class 'str'> value : {"name": "ACME", "shares": 100, "price": 542.23}
排序
# 按照字典key排序
print(json.dumps(data, sort_keys=True))
{"name": "ACME", "price": 542.23, "shares": 100}
缩进显示
# indent参数根据数据格式缩进显示
print(json.dumps(data, sort_keys=True, indent=4))
{
"name": "ACME",
"price": 542.23,
"shares": 100
}
separators
# 作用是去掉‘,’ ‘:’后面的空格,加密json字符串用的比较多
print(json.dumps(data, separators=(',', ':')))
{"name":"ACME","shares":100,"price":542.23}
ensure_ascii
# 输出中文
print(json.dumps('益达'))
print(json.dumps('益达', ensure_ascii=False))
"\u76ca\u8fbe"
"益达"
loads
new_data = json.loads(json_str)
print('type : ', type(new_data), 'value : ', new_data)
# type : <class 'dict'> value : {'name': 'ACME', 'shares': 100, 'price': 542.23}
loads 单引号数据
data = "{'name': 'ACME', 'age': 0, 'shares': hahaha}"
data = json.dumps(data) # 注释后print会报错
print(json.loads(data))
格式化打印Json数据
from pprint import pprint