python json.dumps() json.dump()的区别详解
以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。
首先说明基本功能:
dumps是将dict转化成str格式,loads是将str转化成dict格式。
dump和load也是类似的功能,只是与文件操作结合起来了。
看代码实例:
In[1]:importjson
In[2]:a={'name':'wang','age':29}
In[3]:b=json.dumps(a)
In[4]:printb,type(b)
{"age":29,"name":"wang"}
In[11]:json.loads(b)
Out[11]:{u'age':29,u'name':u'wang'}
In[12]:printtype(json.loads(b))
然后再看dump和dumps的区别,见代码:
In[1]:importjson
In[2]:a={'name':'wang','age':29}
In[3]:b=json.dumps(a)
In[4]:printb,type(b)
{"age":29,"name":"wang"}
In[5]:c=json.dump(a)
---------------------------------------------------------------------------
TypeErrorTraceback(mostrecentcalllast)
in()
---->1c=json.dump(a)
TypeError:dump()takesatleast2arguments(1given)
这里提示我们少一个参数,我们看一下帮助文件(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``toaJSONformatted``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``asaJSONformattedstreamto``fp``(a
``.write()``-supportingfile-likeobject).
简单说就是dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str然后存入文件中;而dumps直接给的是str,也就是将字典转成str。
例子见代码(注意文件操作的一些小细节):
In[1]:importjson
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]:cattest.txt
In[7]:fp.close()
In[8]:cattest.txt
{"name":"wang"}
In[9]:json.load(fp)
---------------------------------------------------------------------------
ValueErrorTraceback(mostrecentcalllast)
in()
---->1json.load(fp)
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pycinload(fp,encoding,cls,object_hook,parse_float,parse_int,parse_constant,object_pairs_hook,**kw)
285
286"""
-->287returnloads(fp.read(),
288encoding=encoding,cls=cls,object_hook=object_hook,
289parse_float=parse_float,parse_int=parse_int,
ValueError:I/Ooperationonclosedfile
In[10]:fp=file('test.txt','r')
In[11]:json.load(fp)
Out[11]:{u'name':u'wang'}
注:实际中dump用的较少。
到此这篇关于pythonjson.dumps()json.dump()的区别详解的文章就介绍到这了,更多相关pythonjson.dumps()json.dump()内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!