Python Json模块

53 阅读1分钟

json模块

json是轻量级的数据交换格式,完全独立于编程语言的文本格式来存储和表示数据,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

import json
json.loads(s, encoding=None,cls=None) # 反序列化
json.dumps(dumps(obj, ensure_ascii=True) # 序列化
json.dump(obj, fp, ensure_ascii=True) # 序列化obj对象到文件
json.load(fp, cls=None) # 反序列化文件内容到Python对象

序列化:将python对象处理为json格式

反序列化:将json格式处理为Python对象


JSONEncoder不知道怎么去把这个数据转换成json字符串的时候,会调用default()函数,default()函数默认会抛出异常 重写default()函数来处理datetime类型的数据。

  • 比如直接序列化时间类型,会抛出TypeError
TypeError: Object of type 'datetime' is not JSON serializable
  • 可以编写json.JSONEncoder类对象并重写default方法来处理datetime类型
import json
from datetime import datetime, date

class JsonToDatetime(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H: %M: %S')
        elif isinstance(obj, date):
            return obj.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, obj)
d = {'name': 'ric', 'age': 18, 'data': datetime.now()}
print(json.dumps(d, cls=JsonToDatetime))