qq_41011716 2024-09-22 15:50 采纳率: 100%
浏览 6
已采纳

报错TypeError: Object of type Row is not JSON serializable,这是为啥呀

Python用flask框架获取数据库数据,并用jsonify()将数据转换成json数据,报错TypeError: Object of type Row is not JSON serializable,这是为啥呀

img

img

img

  • 写回答

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” 这个错误了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月23日
  • 创建了问题 9月22日

悬赏问题

  • ¥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驱动,如何解决?