[Python]继承JSONEncoder来处理JSONEncoder不能处理的数据类型
2018-01-26 00:54
701 查看
一般的数据,JSONEncoder都是可以胜任的,不过也有很多类型不可以,比如datetime。
看了一本书《python语言及其应用》https://book.douban.com/subject/26675127/ page165
里面展示了一段继承重写default()的代码:
对“#否则是普通解码器知道的东西”,充满了疑惑。看源码之后才知道叫”#否则解码器不知道“才对。
在JSONEncoder不知道怎么去把这个数据转换成json字符串的时候,它就会去调用default()函数,所以都是重写这个函数来处理它本身不支持的数据类型,default()函数默认是直接抛异常的。
源码展示了它支持的基本类型。
这部分展示了它最后才会调用default(),这里是_default(),外层有个封装的函数,把default()当参数传进来的,有兴趣的可以去看源码。
看了一本书《python语言及其应用》https://book.douban.com/subject/26675127/ page165
里面展示了一段继承重写default()的代码:
对“#否则是普通解码器知道的东西”,充满了疑惑。看源码之后才知道叫”#否则解码器不知道“才对。
在JSONEncoder不知道怎么去把这个数据转换成json字符串的时候,它就会去调用default()函数,所以都是重写这个函数来处理它本身不支持的数据类型,default()函数默认是直接抛异常的。
源码展示了它支持的基本类型。
这部分展示了它最后才会调用default(),这里是_default(),外层有个封装的函数,把default()当参数传进来的,有兴趣的可以去看源码。
相关文章推荐
- 解决Python自带的json序列化工具不能序列化datetime类型数据问题
- 在Python标准库的json包中,提供了JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换
- python默认json库处理mysql中datetime,date类型不能序列化json的解决方案
- jsoncpp 不能处理long类型数据
- 解决Python自带的json不能序列化data,datetime类型数据问题
- 在Python标准库的json包中,提供了JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换。
- 在Python标准库的json包中,提供了JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换。
- 数据库查回来数据封装成Javabean再转json(有Date类型不能转json处理方法)
- python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
- 【mongo】mongo数据转json时特殊类型处理
- Python 基础(一) JSON 数据简单处理
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
- Python json.dumps 特殊数据类型的自定义序列化操作
- 利用 Python 进行数据分析(二)尝试处理一份 JSON 数据并生成条形图
- Python3 网络传输数据的处理(json / xml / base64)
- python 输出JSON类型数据时遇到的编码问题(utf8,unicode)
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler