JSON(JavaScript Object Notation) :一种轻量级的数据交换格式,基于ECMAScript的一个子集,采用完全独立于语言的文本格式,但也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON在python中分别由list和dict组成。
json.dumps(): 对json进行编码,把数据类型转换成字符串。
json.dump():对json进行编码, 把数据类型转换成字符串,并存储在文件中。
json.loads(): 对json进行解码,把字符串转换成数据类型 。
json.load(): 把文件打开,对json进行解码,从字符串转换成数据类型。
import json
dictA = {'食品': 49,'购物': 26,'旅游':16}
#编码
dictA_str=json.dumps(dictA)
dictA_str
Out[1]: '{"\\u98df\\u54c1": 49, "\\u8d2d\\u7269": 26, "\\u65c5\\u6e38": 16}'
#解码
dictA_d=json.loads(dictA_str)
dictA_d
Out[2]: {'旅游': 16, '购物': 26, '食品': 49}
#保存
#方法1:
with open('ceshi.json', 'w',encoding='utf8') as fs:# dict转josn
json.dump(dictA,fs)
#方法2:
with open('ceshi.json', 'w',encoding='utf8') as fs:# dict转josn
dictA_str=json.dumps(dictA)
fs.write(dictA_str)
#读取
#方法1:
with open('ceshi.json', 'r',encoding='utf8') as fl:# dict转josn
dictA_d=json.load(fl)
#方法2:
with open('ceshi.json', 'r',encoding='utf8') as fl:# dict转josn
dictA_d=json.loads(fl.read())
dictA_d
Out[166]: {'旅游': 16, '购物': 26, '食品': 49}
import pickle
dictA = {'食品': 49,'购物': 26,'旅游':16}
#编码
dictA_str=pickle.dumps(dictA)
dictA_str
Out[1]: b'\x80\x03}q\x00(X\x06\x00\x00\x00\xe9\xa3\x9f\xe5\x93\x81q\x01K1X\x06\x00\x00\x00\xe8\xb4\xad\xe7\x89\xa9q\x02K\x1aX\x06\x00\x00\x00\xe6\x97\x85\xe6\xb8\xb8q\x03K\x10u.'
#解码
dictA_d=pickle.loads(dictA_str)
dictA_d
Out[2]: {'旅游': 16, '购物': 26, '食品': 49}
#保存
#方法1:
with open(r'ceshi.json', 'w') as fs:# dict转josn
pickle.dump(dictA,fs)
#方法2:
with open('ceshi.json', 'w') as fs:# dict转josn
dictA_str=pickle.dumps(dictA)
fs.write(dictA_str)
#读取
#方法1:
with open('ceshi.json', 'rb') as fl:# dict转josn
dictA_d=pickle.load(fl)
#方法2:
with open('ceshi.json', 'rb') as fl:# dict转josn
dictA_d=pickle.loads(fl.read())
dictA_d
Out[166]: {'旅游': 16, '购物': 26, '食品': 49}
1.json是可以在不同语言之间交换数据的;
pickle只在python之间使用。
2.json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格
式、类对象等josn就不行了;
pickle可以序列化所有的数据类型,包括类,函数都可以序列化。