python json.dumps() json.dump()的区别详解
以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。 首先说明基本功能: dumps是将dict转化成str格式,loads是将str转化成dict格式。 dump和load也是类似的功能,只是与文件操作结合起来了。 看代码实例: In [1]: import json In [2]: a = {'name': 'wang', 'age': 29} In [3]: b = json.dumps(a) In [4]: print b, type(b) {"age": 29, "name": "wan Python中的JSON模块提供了用于处理JSON数据的函数,其中包括`json.dumps()`和`json.dump()`,以及对应的`json.loads()`和`json.load()`。这些函数在处理JSON格式数据时扮演着关键角色,尤其在Python与其他支持JSON格式的语言之间进行数据交换时。 `json.dumps()`和`json.loads()`是一对反向操作的函数。`dumps()`用于将Python的数据结构(如字典、列表等)转换为JSON格式的字符串,以便于存储或传输。例如: ```python import json a = {'name': 'wang', 'age': 29} b = json.dumps(a) print(b, type(b)) # 输出:{"age": 29, "name": "wang"} <class 'str'> ``` 在这里,`json.dumps(a)`将字典`a`转换成了一个JSON格式的字符串`b`。 而`loads()`则是将JSON格式的字符串解码回Python的数据结构: ```python c = json.loads(b) print(c, type(c)) # 输出:{'age': 29, 'name': 'wang'} <class 'dict'> ``` 现在来看`json.dump()`和`json.dumps()`的区别。`dump()`函数除了转换数据外,还负责将结果写入到一个文件对象中。它需要两个参数,一个是待转换的对象,另一个是文件对象,比如: ```python with open('test.json', 'w') as f: json.dump(a, f) ``` 这段代码会将字典`a`转换为JSON格式并写入到名为`test.json`的文件中。注意这里使用了`with`语句,确保文件在操作完成后被正确关闭。 而`dumps()`函数则直接返回转换后的字符串,不会涉及任何文件操作。因此,如果你需要将JSON数据存储到文件,先用`dumps()`转换,再用标准的文件写入方法。 相反,当你从文件读取JSON数据时,使用`json.load()`,它会从文件中读取JSON数据并解析成Python的数据结构: ```python with open('test.json', 'r') as f: data = json.load(f) print(data, type(data)) # 输出:{'age': 29, 'name': 'wang'} <class 'dict'> ``` 这里需要注意的是,一旦文件被`json.dump()`写入后,再用`json.load()`读取时,不能再用同一个文件对象,因为文件指针已经移动到了文件末尾,需要重新打开文件。 此外,`json.dumps()`和`json.dump()`还有一些可选参数,如`indent`用于设置缩进,`sort_keys`用于是否排序键值,`skipkeys`用于忽略不能转换的键,`ensure_ascii`控制是否使用ASCII编码输出,以及`default`用于自定义无法序列化的对象的处理方式等。同样,`json.loads()`和`json.load()`也有一系列参数用于控制解析行为。 `json.dumps()`和`json.dump()`的区别在于是否与文件操作结合,前者返回字符串,后者将数据写入文件;而`json.loads()`和`json.load()`则分别用于从字符串和文件中解析JSON数据。理解这些函数的用法对于在Python中处理JSON数据至关重要。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 3
- 资源: 898
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)