• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

这篇文章主要介绍了Python json 错误xx is not JSON serializable解决办法的相关资料,需要的朋友可以参考下

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://www.gaodaima.com/  例如: 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&q<i>本文来源gaodai$ma#com搞$代*码*网</i>uot;, "num": 1112} {"user": "orangle"}  '''

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

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

以上就是Python json 错误xx is not JSON serializable解决办法介绍的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python json 错误xx is not JSON serializable解决办法介绍
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址