Python json 错误xx is not JSON serializable解决办法


Posted in Python onMarch 15, 2017

Python json 错误xx is not JSON serializable解决办法

在使用json的时候经常会遇到xxx  is not JSON serializable,也就是无法序列化某些对象。经常使用django的同学知道django里面有个自带的Encoder来序列化时间等常用的对象。其实我们可以自己定定义对特定类型的对象的序列化,下面看下怎么定义和使用的。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
#json_extention 
#2014-03-16 
#copyright: orangleliu 
#license: BSD 
 
''''' 
python中dumps方法很好用,可以直接把我们的dict直接序列化为json对象 
但是有的时候我们加了一些自定义的类就没法序列化了,这个时候需要 
自定义一些序列化方法 
 
参考: 
http://docs.python.org/2.7/library/json.html 
 
例如: 
In [3]: from datetime import datetime 
 
In [4]: json_1 = {'num':1112, 'date':datetime.now()} 
 
In [5]: import json 
 
In [6]: json.dumps(json_1) 
--------------------------------------------------------------------------- 
TypeError                 Traceback (most recent call last) 
D:\devsofts\python2.7\lib\site-packages\django\core\management\commands\shell.py 
c in <module>() 
----> 1 json.dumps(json_1) 
 
TypeError: datetime.datetime(2014, 3, 16, 13, 47, 37, 353000) is not JSON serial 
izable 
''' 
 
from datetime import datetime 
import json 
 
class DateEncoder(json.JSONEncoder ): 
  def default(self, obj): 
    if isinstance(obj, datetime): 
      return obj.__str__() 
    return json.JSONEncoder.default(self, obj) 
 
json_1 = {'num':1112, 'date':datetime.now()} 
print json.dumps(json_1, cls=DateEncoder) 
 
''''' 
输出结果: 
 
PS D:\code\python\python_abc> python .\json_extention.py 
{"date": "2014-03-16 13:56:39.003000", "num": 1112} 
''' 
 
#我们自定义一个类试试 
class User(object): 
  def __init__(self, name): 
    self.name = name 
 
class UserEncoder(json.JSONEncoder): 
  def default(self, obj): 
    if isinstance(obj, User): 
      return obj.name 
    return json.JSONEncoder.default(self, obj) 
 
json_2 = {'user':User('orangle')} 
print json.dumps(json_2, cls=UserEncoder) 
 
''''' 
PS D:\code\python\python_abc> python .\json_extention.py 
{"date": "2014-03-16 14:01:46.738000", "num": 1112} 
{"user": "orangle"} 
 
'''

定义处理方法是继承json.JSONEncoder的一个子类,使用的时候是在dumps方法的cls函数中添加自定义的处理方法。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python创建和删除目录的方法
Apr 29 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
Django自定义认证方式用法示例
Jun 23 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
Python预测2020高考分数和录取情况
Jul 08 Python
Python快速优雅的批量修改Word文档样式
May 20 Python
200行自定义python异步非阻塞Web框架
Mar 15 #Python
Python实现简易端口扫描器代码实例
Mar 15 #Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 #Python
Python实现Youku视频批量下载功能
Mar 14 #Python
Python实现视频下载功能
Mar 14 #Python
python 实现自动远程登陆scp文件实例代码
Mar 13 #Python
python executemany的使用及注意事项
Mar 13 #Python
You might like
星际实力自我测试
2020/03/04 星际争霸
PHP实现定时执行任务的方法
2014/10/05 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
JavaScript中this详解
2015/09/01 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
WebPack基础知识详解
2017/01/16 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python文件与目录操作实例详解
2016/02/22 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python自动化报告的输出用例详解
2018/05/30 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
煤矿班组长岗位职责
2013/12/29 职场文书
伦敦奥运会口号
2014/06/13 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
个人党性分析材料
2014/12/19 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
2019思想汇报范文
2019/05/21 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书