zoukankan      html  css  js  c++  java
  • 08 Json结构化Datetime时间以及保留中文

    错误描述:

    1 import json
    2 import datetime
    3 
    4 a = datetime.datetime.now()
    5 print(a)
    6 
    7 b = json.dumps(a)
    8 print(b)

    如上代码,执行会报错:

    TypeError: datetime.datetime(2017, 2, 5, 10, 27, 48, 155328) is not JSON serializable

    因为datetime类型的数据无法直接用json序列化。

    解决办法:

    class CJsonEncoder(json.JSONEncoder):
        def default(self, obj):
            #if isinstance(obj, datetime):
                #return obj.strftime('%Y-%m-%d %H:%M:%S')
            if isinstance(obj, datetime.date):
                return obj.strftime('%Y-%m-%d %H:%M:%S')
            else:
                return json.JSONEncoder.default(self, obj)
    
    import json
    import datetime
    
    a = datetime.datetime.now()
    print(a)
    
    b = json.dumps(a,cls=CJsonEncoder)
    print(b)

    执行结果:

    2017-02-05 10:29:05.308121
    "2017-02-05 10:29:05"

     二、保留中文只需要在dumps的时候填入ensure_ascii=False

    如下:

    final_json = json.dumps(list_json, sort_keys=True, indent=4, ensure_ascii=False)
  • 相关阅读:
    函数探幽--引用变量
    函数探幽—内联函数
    我遇到的头文件
    继承的特点
    汇编语言中压栈与入栈
    cin.good(),cin.fail(),cin.clear()
    结构体的处理(以c++primer plus 第六章习题4为例)
    uva508
    uva253 CubePainting
    uva1590
  • 原文地址:https://www.cnblogs.com/a2534786642/p/11050352.html
Copyright © 2011-2022 走看看