
json模块,是python内部的一个模块,可以将python的数据格式转换为json格式的数据,也可以将json格式的数据转换为python的数据格式
json格式,是一个数据格式(本质上就是字符串,常用于网络数据传输)
-
python中的数据格式
data=[ {'id':1,name:'wxy'}, ('wxy1',123) ] -
JSON格式
data='[{"id":1,name:"wxy"},["wxy1",123]]'注意:
- json中字符串要用""(双引号)
json格式的作用
-
跨语言数据传输
语言不同,基础数据类型格式不同 为了方便数据传输,约定格式:json格式
python数据类型与json格式的相互转换
-
python数据类型---->json【序列化】
import json data=[ {'id':1,'name':'小红'}, ('wxy1',123) ] res=json.dumps(data) print(res) #'[{"id": 1, "name": "\u5c0f\u7ea2"}, ["wxy1", 123]]' #ensure_ascii=False,显示中文 res1=json.dumps(data,ensure_ascii=False) print(res1)#'[{"id": 1, "name": "小红"}, ["wxy1", 123]]' -
json---->python数据类型【反序列化】
import json data='[{"id":1,"name":"王晓宇"},["wxy1",123]]' res=json.loads(data) print(res) #[{'id': 1, 'name': '王晓宇'}, ['wxy1', 123]]
python的数据类型转换为json格式,对数据类型有要求,默认只支持:
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
其他类型想要支持,需要自定义JSONEncoder才能实现
import json
from decimal import Decimal
from datetime import datetime
data = [
{"id": 1, "name": "小红", "age": 18, 'size': Decimal("18.99"), 'ctime': datetime.now()},
{"id": 2, "name": "wxy", "age": 18, 'size': Decimal("9.99"), 'ctime': datetime.now()},
]
class MyJSONEncoder(json.JSONEncoder):
def default(self, o):
if type(o)==Decimal:
return str(0)
elif type(o)==datetime:
return o.strftime('%Y-%m-%d')
return super().default(o)
res=json.dumps(data,cls=MyJSONEncoder,ensure_ascii=False)
print(res)
#[{"id": 1, "name": "小红", "age": 18, "size": "0", "ctime": "2022-01-03"}, {"id": 2, "name": "wxy", "age": 18, "size": "0", "ctime": "2022-01-03"}]
3.其他功能
-
json.dumps,序列化生成一个json字符串
-
json.loads,反序列化生成python数据类型
-
json.dump,将数据序列化并写入文件【不常用】
import json data=[ {'id':1,'name':'小红'}, ('wxy1',123) ] f=open('files/a.json',mode='w',encoding='utf-8') json.dump(data,f,ensure_ascii=False) f.close() -
json.load,读取文件中的数据并反序列化为python的数据类型【不常用】
import json f=open('files/a.json',mode='r',encoding='utf-8') res=json.load(f) f.close() print(res,type(res)) #[{'id': 1, 'name': '小红'}, ['wxy1', 123]]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)