zoukankan      html  css  js  c++  java
  • python解决json序列化时间格式 --json

    json

    import json
    from datetime import datetime
    from datetime import date
    
    info = {
    	"name": "ffm",
    	"birth": datetime.now(),
    	"age": 18,
    	'hobbies': ['music', 'read', 'dancing'],
    	'addr': {
    		'country': 'China',
    		'city': 'shanghai'
    	}
    }
    
    
    class CJsonEncoder(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_info = json.dumps(info, cls=CJsonEncoder)
    print(json_info)
    

    。。。

    """
    json_info = {
    	"name": "ffm",
    	"birth": "2020-04-04 11:51:40",
    	"age": 18,
    	"hobbies": [
    			"music",
    			"read",
    			"dancing"
    			],
    	"addr": {
    		"country": "China",
    		"city": "shanghai"
    	}
    }
    
    """
    

    进一步的进阶使用,将MongoDB和sqlalchemy加入

    from datetime import date, datetime
    # MongoDB的id
    from bson import ObjectId
    import json
    # sqlalchemy的元类
    from sqlalchemy.ext.declarative import DeclarativeMeta
    
    
    class JSONEncoder(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')
    		# 如果是MongoDB的id,将其转成字符串
    		elif isinstance(obj, ObjectId):
    			return str(obj)
    		elif isinstance(obj, bytes):
    			return obj.decode()
    		# 如果是sqlalchemy数据库对象将其拆分,拼接成字典
    		elif isinstance(obj.__class__, DeclarativeMeta):
    			res = {}
    			for key in obj.__dict__:
    				if key[0] != "_":
    					res[key] = obj.__dict__[key]
    			return res
    		else:
    			return json.JSONEncoder.default(self, obj)
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    PDB文件格式
    “无法查找或打开 PDB 文件 ”
    HAR的MA节点个数稳定?
    用正则表达式过滤 Android 调试时的无用 Log
    From C# to Java (1)
    From C# to Java (0)
    第三届 “创意正能量” 华中地区移动 App 分析与设计大赛 参赛心得
    PrimeSense 三维重建开发小谈 (2)
    IOS报错:Unexpected ‘@’ in program
    EMGUCV第一天学习
  • 原文地址:https://www.cnblogs.com/daviddd/p/12631168.html
Copyright © 2011-2022 走看看