WordPress网站建设宣传图片

python错误: Object of type * is not JSON serializable解决

释放双眼,带上耳机,听听看~!

Object of type * is not JSON serializable错误是我在写爬虫的时候遇到的一个问题

引起函数

json.dumps()函数引起的

在处理数据的时候使用json.dumps()函数将dict(字典)数据类型转化为json数据的时候,促发了这个错误。

原因:

原因是转化的dict(字典)数据中有value数据没处理好,字典的值中包含了generator、byte(字节)等数据的时候就会触发,而包含字节这类数据是无法转化为json的。

解决:

所以找到自己转换的数据,找到对应的数据转换好就可以解决了。

如果存在比较多的问题数据,也可以自己写函数去处理,遍历字典中的值,如果存在byte(字节)数据就把他转成想要的数据。

json.dumps()函数有一个cls参数,默认值是None。看源码的翻译,参数的作用应该是可以自定义JSONEncoder子类来序列化其他类型。

cls参数注释原文:

To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
``.default()`` method to serialize additional types), specify it with
the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.

参考代码:

# -*- coding: utf-8 -*-
import json

def conversion_type(data):
    """
    通过isinstance()判断data是否是bytes类型数据 是的话就转为str类型
    :param data: 传入的数据
    :return:
    """
    if isinstance(data, bytes):
        return str(data, encoding='utf-8')
    return json.JSONEncoder.default(data)


data = '数据'
# json.dumps(data)
# 修改为:
json.dumps(data,cls=conversion_type,indent=4)

错误截图

python错误: Object of type * is not JSON serializable解决 1

给TA打赏
共{{data.count}}人
人已打赏
Python爬虫Python笔记

Python使用 pytesseract 进行图片识别

2022-10-11 14:07:24

Python异常处理Python笔记

Python selenium 报错: DeprecationWarning: executable_path has been deprecated, please pass in a Service object *...解决

2022-12-21 15:52:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
展开目录