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中的默认参数详解
Jun 24 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
Mar 19 Python
python spyder中读取txt为图片的方法
Apr 27 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
python关闭占用端口方式
Dec 17 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 Python
python re模块常见用法例举
Mar 01 Python
Python标准库之typing的用法(类型标注)
Jun 02 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读取mysql的简单实例
2014/01/15 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
Python中random模块用法实例分析
2015/05/19 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
旷课检讨书1000字
2014/02/14 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
电气自动化求职信
2014/06/24 职场文书
生活小常识广播稿
2014/09/16 职场文书
2015年商场工作总结
2015/04/27 职场文书
郭明义观后感
2015/06/08 职场文书