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 相关文章推荐
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
利用Psyco提升Python运行速度
Dec 24 Python
使用PDB模式调试Python程序介绍
Apr 05 Python
Python3遍历目录树实现方法
May 22 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
python可视化实现代码
Jan 15 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
简单了解Python write writelines区别
Feb 27 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
python实现调用摄像头并拍照发邮箱
Apr 27 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 清除网页病毒的方法
2008/12/05 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
php中in_array函数用法分析
2014/11/15 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
就业推荐自我鉴定
2013/10/06 职场文书
八年级历史教学反思
2014/01/10 职场文书
大学生演讲稿范文
2014/01/11 职场文书
婚前财产公证书
2014/04/10 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
高中生军训感言
2015/08/01 职场文书
初中化学教学反思
2016/02/22 职场文书
公司晚会主持词
2019/04/17 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏