最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python json 错误xx is not JSON serializable解决办法
时间:2017-06-29 编辑:简简单单 来源:一聚教程网
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 ----> 1 json.dumps(json_1)
TypeError: datetime.datetime(2014, 3, 16, 13, 47, 37, 353000) is not JSON serial izable '''
fromdatetimeimportdatetime importjson
classDateEncoder(json.JSONEncoder ): defdefault(self, obj): ifisinstance(obj, datetime): returnobj.__str__() returnjson.JSONEncoder.default(self, obj)
json_1={'num':1112,'date':datetime.now()} printjson.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} '''
#我们自定义一个类试试 classUser(object): def__init__(self, name): self.name=name
classUserEncoder(json.JSONEncoder): defdefault(self, obj): ifisinstance(obj, User): returnobj.name returnjson.JSONEncoder.default(self, obj)
json_2={'user':User('orangle')} printjson.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函数中添加自定义的处理方法。
-
下一个: php生成无限栏目树
相关文章
- JSON与JS对象的区别与对比 05-11
- net.sf.json.JSONObject 为null 的判断方法 04-13
- java怎么使用json? 02-20
- python对json的操作详解 01-05
- 用jsonp实现搜索框功能的例子 10-28
- js中对于json判断的示例介绍 09-12