json模块
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dumps、dump、loads、load
1. json.loads:字符串(标准json格式)转换成 dict list:
import json
data = '[{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]'
list_data = json.loads(data)
print(data)
print(type(data)) # 字符串
print(list_data)
print(type(list_data)) # 字典列表
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
2. json.dumps:dict list转换为json字符串
data_list = [{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]
data_json = json.dumps(data_list)
print(data_json)
print(type(data_json)) # 字符串
- 1
- 2
- 3
- 4
- 5
- 6
注意:json.dumps 序列化时默认使用的ascii编码,想输出真正的中文需要指定 ensure_ascii=False(适用于python3)
data_json = json.dumps(data_list, ensure_ascii=False)
- 1
python2中可以用以下方法:
from __future__ import unicode_literals
data_json = json.dumps(data_list, ensure_ascii=False)
- 1
- 2
- 3
3. json.dump:dict list写入json文件
方法一:传统方法,先将dict list转化为字符串,然后写入文件
data_list = [{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]
data_str = json.dumps(data_list,ensure_ascii=False)
with open('data.json','w') as f:
f.write(data_str)
- 1
- 2
- 3
- 4
- 5
方法二:直接使用json.dump,将dict list写入json文件
data_list = [{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]
fp = open('data_json.json','w')
json.dump(data_list,fp,ensure_ascii=False) # 直接将字典列表写入到文件
fp.close()
- 1
- 2
- 3
- 4
- 5
4. json.load:读取json文件 转换为 dict list
result = json.load(open('data_json.json','r'))
print(result)
print(type(result)) # 字典列表
- 1
- 2
- 3
- 4