国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python json 錯(cuò)誤xx is not JSON serializable解決辦法

2019-11-25 16:19:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Python json 錯(cuò)誤xx is not JSON serializable解決辦法

在使用json的時(shí)候經(jīng)常會(huì)遇到xxx  is not JSON serializable,也就是無(wú)法序列化某些對(duì)象。經(jīng)常使用django的同學(xué)知道django里面有個(gè)自帶的Encoder來(lái)序列化時(shí)間等常用的對(duì)象。其實(shí)我們可以自己定定義對(duì)特定類型的對(duì)象的序列化,下面看下怎么定義和使用的。

#!/usr/bin/env python # -*- coding: utf-8 -*- #json_extention #2014-03-16 #copyright: orangleliu #license: BSD  ''''' python中dumps方法很好用,可以直接把我們的dict直接序列化為json對(duì)象 但是有的時(shí)候我們加了一些自定義的類就沒法序列化了,這個(gè)時(shí)候需要 自定義一些序列化方法  參考: 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)  ''''' 輸出結(jié)果:  PS D:/code/python/python_abc> python ./json_extention.py {"date": "2014-03-16 13:56:39.003000", "num": 1112} '''  #我們自定義一個(gè)類試試 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的一個(gè)子類,使用的時(shí)候是在dumps方法的cls函數(shù)中添加自定義的處理方法。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 张家口市| 舟曲县| 海晏县| 澜沧| 渝北区| 北宁市| 安义县| 丰顺县| 平泉县| 景东| 北宁市| 吴川市| 西林县| 离岛区| 凤翔县| 澄江县| 夹江县| 邵阳市| 百色市| 缙云县| 临城县| 德保县| 伊通| 扶余县| 瑞丽市| 油尖旺区| 河源市| 西华县| 临朐县| 赣榆县| 衡阳市| 龙胜| 诸城市| 黄梅县| 蓝田县| 松原市| 梁山县| 桃源县| 两当县| 宁乡县| 台南市|