python3运行报错:TypeError: Object of type 'type' is not JSON serializable解决方法


首先网上大多数博客没有明确说明问题的来源

  • 这个问题是由于json.dumps()函数引起的。dumps是将dict数据转化为str数据,但是dict数据中包含byte数据所以会报错。
  • 解决:编写一个解码类 遇到byte就转为str

1、新建一个.py文件

myEncoder.py

# -*- coding:utf-8 -*-
# !/usr/bin/env python3
# -*- coding: utf-8 -*-

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)

2、在你发生错误的文件当中 比如a.py

  • 第一步:from myEncoder import MyEncoder
  • 第二步:将json.dumps(data)改写为json.dumps(data,cls=MyEncoder,indent=4)

3、至于json.dumps函数里面的cls,indent参数请自行查询其他博客。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM