json.dumps数据库查询结果 转成 Json有时候会报错 raise TypeError(repr(o) + " is not JSON serializable")
这个是因为查询结果集里有dumps无法识别的类型 需要手动去转换成字符串类型 包括None类型也会报错 我的解决方法是如下[Python] 纯文本查看 复制代码
json.dumps(数据库结果,cls = Serializable_Conversion)# Json序列化过滤错误class Serializable_Conversion(json.JSONEncoder): def default(self, obj): if isinstance(obj.__class__, DeclarativeMeta): app.logger.info(obj) # an SQLAlchemy class fields = {} #过滤无效字段 for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata' and x != 'query' and x != 'query_class']: data = obj.__getattribute__(field) try: #判断类型 因为该类型无法序列化 所以强转为字符串 其他类型也是真么写 添加一下就可以 if isinstance(data,Decimal): fields[field] = str(data) elif data==None : fields[field] = '' else: json.dumps(data) fields[field] = data except TypeError: fields[field] = str(data) # a json-encodable dict return fields return json.JSONEncoder.default(self, obj)
声明:本站所有资源均由网友分享,如有侵权内容,请在文章下方留言,本站会立即处理。