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解析xml中dom元素的方法
Mar 12 Python
python对url格式解析的方法
May 13 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
Python3学习urllib的使用方法示例
Nov 29 Python
python用post访问restful服务接口的方法
Dec 07 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
python3代码输出嵌套式对象实例详解
Dec 03 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
python实现网站的模拟登录
2016/01/04 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
python下载微信公众号相关文章
2019/02/26 Python
python障碍式期权定价公式
2019/07/19 Python
机械设计及其自动化专业推荐信
2013/10/31 职场文书
师范毕业生个人求职信
2013/12/09 职场文书
单位办理社保介绍信
2014/01/10 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
小学推普周活动总结
2015/05/07 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python