python json.dumps() json.dump()的区别详解


Posted in Python onJuly 14, 2020

以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。

首先说明基本功能:

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": "wang"} <type 'str'>
 
In [11]: json.loads(b)
Out[11]: {u'age': 29, u'name': u'wang'}
 
In [12]: print type(json.loads(b))
<type 'dict'>

然后再看dump和dumps的区别,见代码:

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": "wang"} <type 'str'>
 
In [5]: c = json.dump(a)
---------------------------------------------------------------------------
TypeError                 Traceback (most recent call last)
<ipython-input-5-92dc0d929363> in <module>()
----> 1 c = json.dump(a)
 
TypeError: dump() takes at least 2 arguments (1 given)

这里提示我们少一个参数,我们看一下帮助文件(iPyhton中可以直接使用help(json.dumps)来查看帮助文件):

dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` to a JSON formatted ``str``. 

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object). 

简单说就是dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str然后存入文件中;而dumps直接给的是str,也就是将字典转成str。

例子见代码(注意文件操作的一些小细节):

In [1]: import json
 
In [2]: a = {'name': 'wang'}
 
In [3]: fp = file('test.txt', 'w')
 
In [4]: type(fp)
Out[4]: file
 
In [5]: json.dump(a, fp)
 
In [6]: cat test.txt
 
In [7]: fp.close()
 
In [8]: cat test.txt
{"name": "wang"}
In [9]: json.load(fp)
---------------------------------------------------------------------------
ValueError                Traceback (most recent call last)
<ipython-input-9-0064dabedb17> in <module>()
----> 1 json.load(fp)
 
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
  285
  286   """
--> 287   return loads(fp.read(),
  288     encoding=encoding, cls=cls, object_hook=object_hook,
  289     parse_float=parse_float, parse_int=parse_int,
 
ValueError: I/O operation on closed file
 
In [10]: fp = file('test.txt', 'r')
 
In [11]: json.load(fp)
Out[11]: {u'name': u'wang'}

注:实际中dump用的较少。

到此这篇关于python json.dumps() json.dump()的区别详解的文章就介绍到这了,更多相关python json.dumps() json.dump()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
详解python时间模块中的datetime模块
Jan 13 Python
Python中用字符串调用函数或方法示例代码
Aug 04 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
python实现简单银行管理系统
Oct 25 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
python的列表List求均值和中位数实例
Mar 03 Python
Python使用configparser读取ini配置文件
May 25 Python
Django Form设置文本框为readonly操作
Jul 03 Python
Python 在局部变量域中执行代码
Aug 07 Python
Python if else条件语句形式详解
Mar 24 Python
pandas to_excel 添加颜色操作
Jul 14 #Python
Python数据可视化实现多种图例代码详解
Jul 14 #Python
简单的Python人脸识别系统
Jul 14 #Python
Python局部变量与全局变量区别原理解析
Jul 14 #Python
Python迭代器协议及for循环工作机制详解
Jul 14 #Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 #Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 #Python
You might like
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
php中的比较运算符详解
2013/10/28 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
js实现select下拉框选择
2020/01/11 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
python 全文检索引擎详解
2017/04/25 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
自动一体化专业求职信
2014/03/15 职场文书
幼儿园小班评语
2014/04/18 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python