大话性能 Python json 你绕不过去的点,踩过的坑

大话性能 · 2023年06月02日 · 3066 次阅读

简要

在日常的开发工作中,json 是通用的标准格式,基本上所有的数据都按照 json 格式来存放,传递。
不同的编程语言有不同的数据类型; 比如说:
Python 的数据类型有 (dict、list、string、int、float、long、bool、None)
Java 的数据类型有 (bool、char、byte、short、int、long、float、double)
他们的共同特点是,都有字符串类型!
所以要实现不同的编程语言之间对象的传递,就必须把对象序列化为标准格式,比如 XML,但更好的方法是序列化为 JSON,因为 JSON 表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。
JSON 不仅是标准格式,并且比 XML 更快,而且可以直接在 Web 页面中读取,非常方便.

在 python 中,json 虽然是个字符串格式,但是它的数据格式,更像一个字典!

python 原始类型与 json 类型的转化过程,具体的转化对照如下。

Python 内置的 json 模块提供了非常完善的 Python 对象到 JSON 格式的转换。

json.dumps() 将 Python 中的对象转换为 JSON 中的字符串对象
json.loads() 将 JSON 中的字符串对象转换为 Python 中的对象

例子

下面看 2 个比较经典的例子
一、把 dict 转化为 json

从上面的从 python 的 dict 类型的数据转化为 json 类型的字符串例子中可以看到,用到了 json 的 dumps 函数即可,若是有中文,则需要指定 ensure_ascii 为 False 即可,另外若是指定了 sort_keys 为 True,则输出的 json 字符串中的 key 按照字母排序。

二、python 的 class 实例对象转化为 json。
另外,如果是 python 的 class 对象,能否转化为 json 字符串呢,答案是肯定的。具体要怎么做呢。
1、默认如果直接打印对象会是输出如下信息,而不是该对象的各个值。

2、如果直接是 dumps,那么也会报错。

3、其实也还是利用了 dumps 即可,只是需要额外知道可选的函数参数,具体如下。

小结

json 模块的 dumps() 和 loads() 函数是定义得非常好的接口的典范。当我们使用时,只需要传入一个必须的参数。但是,当默认的序列化或反序列机制不满足我们的要求时,我们又可以传入更多的参数来定制序列化或反序列化的规则,既做到了接口简单易用,又做到了充分的扩展性和灵活性

更多内容可以学习《测试工程师 Python 工具开发实战》书籍

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册