python使用json序列化datetime类型实例解析

使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码:

# -*- coding: cp936 -*-
from datetime import datetime

import json

if __name__=='__main__':
 now = datetime.now()
 json.dumps({'now':now})

运行会出现下面的错误信息:

Traceback (most recent call last):
 File "C:\Users\xx\Desktop\t.py", line 8, in <module>
  json.dumps({'now':now})
 File "C:\Python27\lib\json\__init__.py", line 231, in dumps
  return _default_encoder.encode(obj)
 File "C:\Python27\lib\json\encoder.py", line 201, in encode
  chunks = self.iterencode(o, _one_shot=True)
 File "C:\Python27\lib\json\encoder.py", line 264, in iterencode
  return _iterencode(o, 0)
 File "C:\Python27\lib\json\encoder.py", line 178, in default
  raise TypeError(repr(o) + " is not JSON serializable")
TypeError: datetime.datetime(2012, 12, 26, 11, 51, 33, 409000) is not JSON serializable

意思是说datetime类不支持Json序列化

我们需要对json做下扩展,让它可以支持datetime类型。

class ComplexEncoder(json.JSONEncoder):
  def default(self, obj):
    if isinstance(obj, datetime):
      return obj.strftime('%Y-%m-%d %H:%M:%S')
    elif isinstance(obj, date):
      return obj.strftime('%Y-%m-%d')
    else:
      return json.JSONEncoder.default(self, obj)

在调用json.dumps时需要指定cls参数为ComplexEncoder

例如:

json.dumps({'now':now}, cls=ComplexEncoder)

总结

以上就是本文关于python使用json序列化datetime类型实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

您可能感兴趣的文章:

  • python数据封装json格式数据
  • Python Json序列化与反序列化的示例
  • python 3.6 tkinter+urllib+json实现火车车次信息查询功能
  • Python简单读取json文件功能示例
  • Python3 处理JSON的实例详解
  • Python3.x对JSON的一些操作示例
  • python3.x上post发送json数据
(0)

相关推荐

  • python数据封装json格式数据

    最简单的使用方法是: >>> import simplejson as json >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) '["foo", {"bar": ["baz", null, 1.0, 2]}]' >>> print(json.dumps("\"foo\bar")) "\&q

  • python 3.6 tkinter+urllib+json实现火车车次信息查询功能

    一.概述 妹子工作时需要大量地查询火车车次至南京的信息,包括该车次到达站(南京站or南京南站).到达时间.出发时间等,然后根据这些信息做下一步工作. 版本结束,趁着间歇期,帮她弄了个简易的批量查询工具,粉色的按钮是给她用的~哈哈哈! (๑*◡*๑) 大概80行代码,主要是: 界面读取待查询车次 - - - - 调用车次信息接口- - - - 解析返回数据 - - - - 组装结果 - - - - 封装到界面(tkinter) python+tkinter实现界面,详见之前的学习笔记:http:/

  • Python3 处理JSON的实例详解

    Python3 处理JSON的实例详解 真的好简单,灰常简单 import os, io, sys, re, time, base64, json import webbrowser, urllib.request def main(): "main function" url = "http://m.weather.com.cn/data/101010100.html" stdout=urllib.request.urlopen(url) weatherInfo=

  • Python简单读取json文件功能示例

    本文实例讲述了Python简单读取json文件功能.分享给大家供大家参考,具体如下: read_json.json: { "rule":{ "namespace":"strategy", "name":"test_exp_1496234234223400", "version":0, "last_modify_time":1434234236819000, "

  • Python3.x对JSON的一些操作示例

    前言 本文主要给大家介绍了关于python3对JSON的一些操作,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.Dictionary 转为JSON 将dict转为JSON,这里利用包json import json aItem = {} aItem["id"] = "2203" aItem["title"] = "title" aItem["subTitle"] = "su

  • python3.x上post发送json数据

    一.摘要 做接口自动化测试时,常常需要使用python发送一些json内容的接口报文,如果使用urlencode对内容进行编码解析并发送请求,会发现服务器返回了200,OK的状态,但响应内容不可读(像是一堆加密报文).定位问题时发现抓包发现发送报文的内容与我们发送的json内容不符(会去掉"{"与"}"等内容),所以重新采用了json封装后,问题解决. 二.解决方法 1.先导入json模块,采用json.dumps将json内容进行封装 eg: import jso

  • Python Json序列化与反序列化的示例

    不同的编程语言有不同的数据类型; 比如说: Python的数据类型有(dict.list.string.int.float.long.bool.None) Java的数据类型有(bool.char.byte.short.int.long.float.double) C的数据类型有(bit.bool.char.int.short.long.unsigned.double.float) Tcl的数据类型(int.bool.float.string) Ruby的数据类型(Number.String.R

  • python使用json序列化datetime类型实例解析

    使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码: # -*- coding: cp936 -*- from datetime import datetime import json if __name__=='__main__': now = datetime.now() json.dumps({'now':now}) 运行会出现下面的错误信息: Traceback (most recent call last): File "C:\Users\xx\De

  • JSONLINT:python的json数据验证库实例解析

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数 描述 json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JSON 字符串解码为 Python 对象 随着前后端分离和 REST APIs 的火热,开发者不断寻找着一种灵活的.优雅的方式验证 json 数据.有直接手动获取数据验证的,也有使用

  • python的time模块和datetime模块实例解析

    这篇文章主要介绍了python的time模块和datetime模块实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 将当前时间转成字符串 strftime 方法,并输出 import datetime # 获取当前时间 datetime.datetime.now() print(datetime.datetime.now()) # 输出时间格式数据:2019-11-28 20:39:25.485711 now_time=str(da

  • Python建立Map写Excel表实例解析

    本文主要研究的是用Python语言建立Map写Excel表的相关代码,具体如下. 前言:我们已经能够很熟练的写Excel表相关的脚本了.大致的操作就是,从数据库中取数据,建立Excel模板,然后根据模板建立一个新的Excel表,把数据库中的数据写入.最后发送邮件.之前的一篇记录博客,写的很标准了.这里我们说点遇到的新问题. 我们之前写类似脚本的时候,有个问题没有考虑过,为什么要建立模板然后再写入数据呢?诶-其实也不算是没考虑过,只是懒没有深究罢了.只求快点完成任务... 这里对这个问题进行思考阐

  • Python中json.dumps()函数的使用解析

    json.dumps将一个Python数据结构转换为JSON import json data = { 'name' : 'myname', 'age' : 100, } json_str = json.dumps(data) json库的一些用法 方法 作用 json.dumps() 将python对象编码成Json字符串 json.loads() 将Json字符串解码成python对象 json.dump() 将python中的对象转化成json储存到文件中 json.load() 将文件中

  • python删除过期log文件操作实例解析

    本文研究的主要是python删除过期log文件的相关内容,具体介绍如下. 1. 用Python遍历目录 os.walk方法可以很方便的得到目录下的所有文件,会返回一个三元的tupple(dirpath, dirnames, filenames),其中,dirpath是代表目录的路径,dirnames是一个list,包含了dirpath下的所有子目录的名字,filenames是一个list,包含了非目录的文件,如果需要得到全路径,需要使用os.path.join(dirpath,name).例如t

  • Python 之 Json序列化嵌套类方式

    想要用python自已手动序列化嵌套类,就要明白两个问题: 1.Json是什么? 2.Json支持什么类型? 答案显而易见 Json就是嵌套对象 Json在python中支持列表,字典(当然也支持int,string.....,不过说这个也没多大必要) 很好,等等,列表,字典?我们在python中学过列表,字典,字典列表,列表字典,字典字典,那,我们可不可以把类对象转化为这些呢? 我可以很确定的告诉你,可以,并且,嵌套类都可以!!! 下面就来实战: from flask import Flask

  • 利用Python实现Json序列化库的方法步骤

    前言 在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序列化仅支持python内置的基本类型. Python 在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序列化仅支持python内置的基本类型,对

  • Java对象的XML序列化与反序列化实例解析

    上一篇文章我们介绍了java实现的各种排序算法代码示例,本文我们看看Java对象的xml序列化与反序列化的相关内容,具体如下. XML是一种标准的数据交换规范,可以方便地用于在应用之间交换各类数据.如果能在Java对象和XML文档之间建立某种映射,例如Java对象的XML序列化和反序列化,那么就可以使Java的对象方便地与其他应用进行交换. java.beans包里面有两个类XMLEncoder和Decoder,分别用于将符合JabaBeans规范的Java对象以XML方式序列化和反序列化.以下

  • python根据unicode判断语言类型实例代码

    本文实例主要实现的是python根据unicode判断语言类型,具体如下. 实例代码: def is_chinese(uchar): """判断一个unicode是否是汉字""" if uchar >= u'\u4e00' and uchar<=u'\u9fa5': return True else: return False def is_number(uchar): """判断一个unicode是否是

随机推荐