问题:

python3中使用json.dumps(dicts)序列化字典时,如果字典中含有自定义的项时报错:TypeError: Object of type 'bytes' is not JSON serializable。

发现字典中含有bytes类型的数据,所以序列化失败。

后来查阅相关资料才发现,默认的编码函数很多数据类型都不能编码,因此可以自己写一个encoder去继承jsonencoder ,这样就能够进行编码了。

比如说上面的这个问题,是因为json.dumps函数发现字典里面有bytes类型的数据,因此无法编码,只要在编码函数之前写一个编码类就行了,只要检查到了是bytes类型的数据就把它转化成str类型。

解决方法:

在编码函数之前写一个编码类,只要检查到了是bytes类型的数据就把它转化成str类型。

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)

将字典进行序列化时使用如下方法:

data = json.dumps(data,cls=MyEndoder)

或者将上述类写进一个文件中MyEncoder.py中在其他文件需要使用时进行引入即可:

from MyEncoder import MyEncoder

data = json.dumps(data,cls=MyEndoder)

问题延伸:

后面在编码的时候发现出现类似问题:

TypeError: Object of type 'ndarray' is not JSON serializable

这样也是一样的处理方式,当检查到了ndarray数据,把它转化成list数据就行:

class MyEncoder(json.JSONEncoder):

def default(self, obj):

if isinstance(obj, np.ndarray):

return obj.tolist()

elif isinstance(obj, bytes):

return str(obj, encoding='utf-8');

return json.JSONEncoder.default(self, obj)

python3序列化_python3 json序列化问题相关推荐

  1. python3 中的Json序列化、反序列化 和 字符编码的问题解决

    python3 中的Json序列化.反序列化 和 字符编码的问题解决 参考文章: (1)python3 中的Json序列化.反序列化 和 字符编码的问题解决 (2)https://www.cnblog ...

  2. Atitit php序列化 php的serialize序列化和json序列化

    Atitit php序列化 php的serialize序列化和json序列化 PHP 对不同类型的数据用不同的字母进行标示,Yahoo 开发网站提供的Using Serialized PHP with ...

  3. Java序列化——JDK序列化与Json序列化

    Java原生序列化 Java原生序列化我们可能会了解的比较多,Java类通过实现Serializable接口来实现该类对象的序列化,这个接口非常特殊,没有任何方法,只起标识作用.Java序列化保留了对 ...

  4. json 序列化 java_Java JSON序列化杂谈

    在C#中序列化是比较容易的,如果不用第三方的类库,那么C#提供的两个对象也够我们使用,一般的操作是定义一个不含有方法的类,这个类里面定义了要序列化的对象的属性,因为我C#用的比较多,这里直接给出泛型, ...

  5. 简单了解各种序列化技术-JSON序列化框架

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,相对于XML来说,JSON的字节流更小,而且可读性也非常好.现在JSON数据格式在企业运用是最普遍的 JSO ...

  6. pythonjson序列化_Python Json序列化与反序列化的示例

    不同的编程语言有不同的数据类型; 比如说: Python的数据类型有(dict.list.string.int.float.long.bool.None) Java的数据类型有(bool.char.b ...

  7. JAVA生成json效率_java序列化和json序列化效率对比

    一.背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON的序列化来做.所以我们还是比比吧. Java观点:Object2Object,使用时简单快速. JSON观点: ...

  8. 18.在springboot中的RedisTemplate序列化,json序列化

    序列化:把对象转化为可传输的字节序列过程称为序列化. 反序列化:把字节序列还原为对象的过程称为反序列化.. 为什么需要序列化 序列化最终的目的是为了对象可以跨平台存储,和进行网络传输.而我们进行跨平台 ...

  9. 二进制序列化器、XML序列化器、Json序列化器

    二进制序列化器.XML序列化器.Json序列化器 序列化是将对象的状态信息转换未可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区读取或反序列化 ...

最新文章

  1. 腾讯信息流热点挖掘技术实践
  2. R语言配置可视化内容中的字体为斜体(italic)实战:标题斜体、轴标签斜体、文本内容斜体、或者部分内容斜体
  3. contains java_Java CopyOnWriteArraySet contains()用法及代码示例
  4. mkimage工具讲解
  5. python能做哪些单机游戏好玩_【单机游戏】可以快速用Python进行数据分析的几个小技巧_玩得好游戏攻略...
  6. PIC32单片机harmony开发环境 - i2c例程和代码分析
  7. 【要闻】Kubernetes安全问题严峻、Linux v5.4安全性浅谈
  8. Python【02】【基础部分】- B
  9. 【Liunx】Linux 文件与目录管理
  10. lock mysql unlock_MySql中Lock命令和unlock命令
  11. flask-restful 开发API
  12. dbutils使用---QueryRunner(query_update)、BeanList\BeanHandler、MapList\MapHandler、ScalarHandler...
  13. 行测测评——矩阵、圆形、环形三角图形数列推理解题技巧
  14. 小米bl未解锁变砖了如何刷机_如何正确刷机
  15. python列表和字典的区别_Python中列表和字典有什么区别,分别适用于什么场景?...
  16. HDU 5698:瞬间移动(排列组合)
  17. Python基础知识点回顾
  18. 百度Android地图SDK地理编码及标注
  19. 最新款服务器主板,新至强处理器御用座驾,技嘉推出MD71和MD61两款服务器主板...
  20. 后端优化 | VINS-Mono 论文公式推导与代码解析分讲

热门文章

  1. 剑指 Offer II 117. 相似的字符串
  2. css遮罩层从下往上_CSS:图片自带3px下边距的bug修复
  3. python教程七牛云_通过Python来使用七牛云存储的方法详解
  4. filter过滤器_Java过滤器Filter讲解(Java基础)
  5. 数据结构与算法之-----二叉树(一)
  6. hashmap put过程_HashMap为什么线程不安全?
  7. java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询
  8. 批量获取ip运营商_通信公司员工收钱开通IP多拨被用于诈骗,6人获刑
  9. 6、raid、lvm、while、until 学习笔记
  10. 14、DNS正反向解析、主从复制、子域授权、区域转发 学习笔记