flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法
先把对象转换字典:
class User(db.Model):__tablename__ = 'user'id = db.Column(db.INTEGER,primary_key=True)login_name = db.Column(db.String(80),unique=True)create_time = db.Column(db.String(80),nullable=False)sex = db.Column(db.String(80),nullable=False)cellphone = db.Column(db.String(80),nullable=False)cname = db.Column(db.String(80),nullable=False)password = db.Column(db.String(80),nullable=False)head_portrait = db.Column(db.String(80),nullable=False)birthday = db.Column(db.String(80),nullable=False)stature = db.Column(db.String(80),nullable=False)weight = db.Column(db.String(80),nullable=False)medical_history = db.Column(db.String(80),nullable=False)update_time = db.Column(db.String(80),nullable=False)location = db.Column(db.String(80),nullable=False)blood_glucose = db.Column(db.String(80),nullable=False)lastLoginTime = db.Column(db.String(80),nullable=False)newUploadTime = db.Column(db.String(80),nullable=False)identity = db.Column(db.String(80),nullable=False)deviceid = db.Column(db.String(80),nullable=False)head_portrait_time = db.Column(db.String(80),nullable=False)accid = db.Column(db.String(80),nullable=False)token = db.Column(db.String(80),nullable=False)wallet = db.Column(db.String(80),nullable=False)idcardNum = db.Column(db.String(80),nullable=False)faith = db.Column(db.String(80),nullable=False)nation = db.Column(db.String(80),nullable=False)status = db.Column(db.String(80),nullable=False)country_code = db.Column(db.String(80),nullable=False)time_diff = db.Column(db.String(80),nullable=False)final_phone = db.Column(db.String(80),nullable=False)enterprise_id = db.Column(db.String(80),nullable=False)thirdUserid = db.Column(db.String(80),nullable=False)isDoctor = db.Column(db.String(80),nullable=False)isNurse = db.Column(db.String(80),nullable=False)imAccid = db.Column(db.String(80),nullable=False)payPassWord = db.Column(db.String(80),nullable=False)isCancel = db.Column(db.String(80),nullable=False)recommendUser = db.Column(db.String(80),nullable=False)def keys(self):return ('id','login_name','create_time','sex','cellphone','cname','password','head_portrait','birthday','stature','weight','medical_history','update_time','location','blood_glucose','lastLoginTime','newUploadTime','identity','deviceid','head_portrait_time','accid','token','wallet','idcardNum','faith','nation','status','country_code','time_diff','final_phone','enterprise_id','thirdUserid','isDoctor','isNurse','imAccid','payPassWord','isCancel','recommendUser')def __getitem__(self, item):return getattr(self, item)
很关键的俩个方法:
def keys(self):
def __getitem__(self,item)
然后调用对象的dict()fang方法。
@app.route('/select_user')
def select_user():# 查询所有用户users_list = User.query.all()list = [dict(i) for i in users_list]return json.dumps(list,cls=DateEncoder,indent=4)
给前端返回去一个json,又出问题:
提示:ypeError: Object of type 'bytes' is not JSON serializable
import json
class MyEncoder(json.JSONEncoder):def default(self, obj):"""只要检查到了是bytes类型的数据就把它转为str类型:param obj::return:"""if isinstance(obj, bytes):return str(obj, encoding='utf-8')return json.JSONEncoder.default(self, obj)
解决了,网上找到的
又提示:Object of type 'datetime' is not JSON serializable
import json
import datetime
class DateEncoder(json.JSONEncoder):def default(self, obj):if isinstance(obj, datetime.datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')elif isinstance(obj, datetime.date):return obj.strftime("%Y-%m-%d")else:return json.JSONEncoder.default(self, obj)
解决掉了,最后想着结合一下:
import json
import datetime
class DateEncoder(json.JSONEncoder):def default(self, obj):if isinstance(obj, datetime.datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')elif isinstance(obj, datetime.date):return obj.strftime("%Y-%m-%d")elif isinstance(obj, bytes):return str(obj, encoding='utf-8')else:return json.JSONEncoder.default(self, obj)
就彻底好了,
瞬间好了,很欣慰撒。。。。。。。。。。。。。。。
贴个图,下班回家。
flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法相关推荐
- 返回 JSON 格式数据报错:TypeError: Object of type set is not JSON serializable
在做 flask 项目的时候需要返回一个 JSON 数据,运行的过程中却报错:TypeError: Object of type set is not JSON serializable 报错位置如下 ...
- Object of type 'ListSerializer' is not JSON serializable “listserializer”类型的对象不可JSON序列化...
Object of type 'ListSerializer' is not JSON serializable "listserializer"类型的对象不可JSON序列化 一般 ...
- Flask API TypeError: Object of type 'Response' is not JSON serializable
Flask API TypeError: Object of type 'Response' is not JSON serializable 错误代码: session['image'] = str ...
- windows不能查询组策略对象列表 解决方案
域控事件日志有错误提示windows 不能查询组策略对象列表,下面列出解决方法: 解决: 1. 打开 C:\WINDOWS\SYSVOL\domain\Policies\{6AC1786C-016F- ...
- Ubuntu20.4下打开WPS提示缺失字体“Symbol、Wingdings、Wingdings 2...“的解决办法
Ubuntu20.4下打开WPS提示缺失字体"Symbol.Wingdings.Wingdings 2..."的解决办法 软件环境: ubuntu : Ubuntu 20.04.1 ...
- WIN10的联想小新VMcare安装Centos7虚拟机时提示“Intel VT-x处于禁用状态”有以下几种解决办法
WIN10的联想小新VMcare安装Centos7虚拟机时提示"Intel VT-x处于禁用状态"有以下几种解决办法: 一.开启虚拟化服务(此类方法网上有很多可以自己百度详细教程) ...
- win10未开启没有运行无线服务器,win10系统提示共享无线自动配置服务没有自动运行的解决办法...
win10系统提示共享无线自动配置服务没有自动运行的解决办法? win10系统有很多人都喜欢使用,我们操作的过程中常常会碰到win10系统提示共享无线自动配置服务没有自动运行的问题.如果遇到win10 ...
- 使用git时ssh提示“Load key /home/devid/.ssh/id_rsa: bad permissions”的解决办法
2019独角兽企业重金招聘Python工程师标准>>> 使用git时ssh提示"Load key "/home/devid/.ssh/id_rsa": ...
- Laravel5.5执行 npm run dev时报错,提示cross-env找不到(not found)的解决办法
Laravel 5.4 Mix & Laravel5.5执行 npm run dev时报错,提示cross-env找不到(not found)的解决办法 首先进入package.json文件, ...
最新文章
- shell-sed命令详解(转)
- 《深度学习的数学》二刷总结
- Oracle为JDK 8寻求社区参与
- IDEA Terminal替换成Git Bash_05
- JS中Date.parse()和Date.UTC()返回值不一致
- 4010-基于邻接矩阵的边的删除(C++,附思路)
- MySQL如何安装离线_mysql8.0.2离线安装配置方法图文教程
- (3)<meta>标签
- 编译原理基础---思维导图
- r语言lm函数_如果R语言自带函数不能用,那我就自己写一个
- 甘特图制作_使用excel制作甘特图其实很简单,仅需4步搞定,项目进度一目了然...
- 软件测试,我是女生适合吗?我30岁了能学会吗?我大专毕业能做吗?
- Bailian2925 大整数的因子【模除】
- vue组件内数值做watch监听,首次监听不到的问题
- 汽车票售票系统 php,客车网上售票系统(2)
- 知识付费系统源码基于PHP开源的网站内容付费源码|知识付费小程序源码
- 论文笔记 - 《Deep Learning》(Yann LeCun Yoshua Bengio Geoffrey Hinton)经典
- java学习方法和经验
- Zigbee(3) ---- 无线温度检测试验
- Leetcode 143 链表对折
热门文章
- 递归5--汉诺塔问题的栈实现
- iOS 应用程序的生命周期浅析
- [转]在Visual Studio 2013/2015中设计UML活动图
- Struts+iBatis+Spring+mysql整合开发
- Java JDBC初步
- mysql ip v4 v6_mysql IPv4 IPv6
- .net 批量更新_云子批量命名电脑版|云子批量命名PC版下载_v2021
- 计算机考研哪个专业代码少,考研专业代码到底是什么意思
- 为什么let在php中报错,ES6系列之声明变量let与const
- emacs java自动import,在Java模式如何我配置Emacs,这样就不会自动对齐方法参数