一般做网站用什么字体比较合适,做网站 售后服务里都写啥,2017主流网站开发语言,外链吧发布seopython对象转字典
1、为什么要对python对象转换为字典
python字典与json对象结构相似#xff0c;json数据结构是最常用的数据结构
2、python对象转字典及序列化的核心点在哪
python对象有很多内置属性并不是我们所需要的python字典对象在序列化的时候#xff0c;时间字段…python对象转字典
1、为什么要对python对象转换为字典
python字典与json对象结构相似json数据结构是最常用的数据结构
2、python对象转字典及序列化的核心点在哪
python对象有很多内置属性并不是我们所需要的python字典对象在序列化的时候时间字段序列化会报错自定义类型数据的序列化
3、实战示例
import logging
import traceback
from datetime import datetime, datefrom user.models import GenderEnumdef to_json(obj):fields {}if isinstance(obj, dict):attributes obj.keys()else:attributes [x for x in obj.__dict__ if not x.startswith(_)]for field in attributes:if isinstance(obj, dict):data obj.get(field)else:data obj.__getattribute__(field)try:if isinstance(data, datetime):data data.strftime(%Y-%m-%d %H:%M:%S)if isinstance(data, date):data data.strftime(%Y-%m-%d)if isinstance(data, GenderEnum):data data.valuefields[field] dataexcept TypeError:fields[field] Nonelogging.error(traceback.format_exc())return fields3.1、注意事项
3.1.1、python对象的内置属性都是以_开头的所以可以通过判断数据开头是不是_来过滤内置属性
attributes [x for x in obj.__dict__ if not x.startswith(_)]3.1.2、python字典对象没有__dict__属性所以要对对象类型做判断
if isinstance(obj, dict):attributes obj.keys()
else:attributes [x for x in obj.__dict__ if not x.startswith(_)]3.1.3、python字典对象与非字典对象取值方式不一样非字典对象使用obj.__getattribute__(field),字典对象使用data obj.get(field)方式取值
if isinstance(obj, dict):data obj.get(field)
else:data obj.__getattribute__(field)3.1.4、时间、日期类型对象值的获取
if isinstance(data, datetime):data data.strftime(%Y-%m-%d %H:%M:%S)
if isinstance(data, date):data data.strftime(%Y-%m-%d)3.1.5、自定义对象值的获取
if isinstance(data, GenderEnum):data data.value自定义类型GenderEnum
class GenderEnum(enum.Enum):man 1woman 2