Python用flask框架获取数据库数据,并用jsonify()将数据转换成json数据,报错TypeError: Object of type Row is not JSON serializable,这是为啥呀
1条回答 默认 最新
- 一轮明月照丘壑 2024-09-22 15:58关注
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
从报错信息来看,问题出在尝试将数据库查询返回的
Row
对象直接通过jsonify()
方法转换为 JSON 格式。Row
对象通常包含数据库表的行数据,它不是一个可以直接序列化为 JSON 的数据类型。因此,你需要先从数据库中提取你想要的数据,然后转换为可以被jsonify()
方法处理的格式。例如,如果你的
find_last_9()
函数返回的是一个包含Row
对象的列表,你需要遍历这个列表,然后从每个Row
对象中提取你需要的字段,将它们转换为一个可以被序列化的数据类型(例如字典),然后再进行jsonify()
操作。这里有一个例子展示如何进行这种转换:
def convert_row_to_dict(row): return { 'articleid': row.articleid, 'headline': row.headline, # 添加其他需要的字段... } @index.route('/recommend') def recommend(): article = Article() last, most, recommended = article.find_last_most_recommended() data_list = [] # 用于存储转换后的数据列表 for item in last: # 将Row对象转换为字典并添加到列表中 data_list.append(convert_row_to_dict(item)) # 然后将处理过的数据列表转换为JSON格式并返回 return jsonify(data_list)
在这个例子中,我们首先定义了一个函数
convert_row_to_dict()
来将Row
对象转换为字典。然后,在recommend()
函数中,我们遍历从数据库查询返回的Row
对象列表,将它们转换为字典并添加到新的列表中。最后,我们使用处理过的数据列表作为jsonify()
方法的参数,将其转换为 JSON 格式并返回。这样就能避免 “Object of type Row is not JSON serializable” 这个错误了。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见
- ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
- ¥20 sentry如何捕获上传Android ndk 崩溃
- ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
- ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?