『Json』常用方法记录
json模块可以把字典结构改写为string然后保存,并可以反向读取字典
pickle模块则可以持久化任意数据结构
但是即使同样是字典数据结构,两个包也是有差别的,
json字典value不支持其他对象只支持python原有的结构,但是json由于是转换为string,所以保存的文件是可以使用文本查看器去读取的
pickle包则支持各种python的对象,但它写入的是二进制文件,并有自己独特的编码方式,所以是不可以查看的,只能使用python载入
方法简介,
dumps是将dict转化成str格式,loads是将str转化成dict格式。
dump和load也是类似的功能,只是与文件操作结合起来了,需要文件流作为参数(句柄,注意一个对应r一个对应w),不常用这两个方法。
dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str然后存入文件中;而dumps直接给的是str,也就是将字典转成str。
json.dumps()
操作将字典转化为str,而json.loads()做反向变换,
它们和保存文件的尾缀.json没有关系:
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'>
json.dumps()操作默认是ascii格式保存,一般中文字典会加上ensure_ascii=False:
json.dumps(dict(item), ensure_ascii=False)
json.loads()
将字符串转化为字典文件,示范在下文: