json和pickle
Pickle序列化
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
json是可以和别的语言交互,转换后别的语言可以使用,但仅限于字符串,列表和字典
而pickle是python独有的,可以保存当前状态,可以存档
Json模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load
pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...还可以把一个程序,一个类给序列化掉)
import json
#loads #--> 内部必须是双引号
#dumps --loads (对现有的一个操作)
s = '{"desc":"invilad-citykey", "status":1002}' l = [11,22,33,44] result = json.loads(s) print(result,type(result)) result = json.dumps(l) print(result,type(result)) 结果: {'status': 1002, 'desc': 'invilad-citykey'} <class 'dict'> [11, 22, 33, 44] <class 'str'>
dump -- load(对文件的一个操作)
s = {"desc":"invilad-citykey", "status":1002} l = [11,22,33,44] a = json.dump(s,open("db","w", encoding="utf-8")) b = json.load(open("db","r", encoding="utf-8")) print(b, type(b))
注意一个问题:
如果是汉字进行json转换的话:会转换成编码
所以
t = json.dumps(r, ensure_ascii=False)
ok,这就是区别
作者:沐禹辰
出处:http://www.cnblogs.com/renfanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
出处:http://www.cnblogs.com/renfanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。