json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化)。(适用于多种编程语言,可以与其他编程语言做数据交换)
pickle:用于对Python对象结构进行序列化和反序列化。(只适用于python)
对于人类而言,json是人类可读的,而pickle不是。
json常用方法(支持列表,字典,元组等基本数据类型):
dumps() --- 将传入的对象序列化。
调用:json.dumps(object)
例如(将列表,字典等不能直接写入文件的数据序列化成字符串):
>>> json.dumps([1,2,3,4])
'[1, 2, 3, 4]'
>>> json.dumps({'a':1, 'b':2, 'c':3, 'd':4})
'{"a": 1, "c": 3, "b": 2, "d": 4}'
dump() --- 将传入的对象序列化并写入文件。
调用:json.dump(object, fp)
例如:


1 import json
2
3 list_1 = [1, 2, 3, 4]
4 dict_1 = {"a": 1, "c": 3, "b": 2, "d": 4}
5
6 filename = "test.json"
7
8 '''
9 with open(filename, 'w') as fp:
10 fp.write(json.dumps(list_1))
11 fp.write(json.dumps(dict_1))
12 '''
13
14 #等同与上面注释中的代码
15 with open(filename, 'w') as fp:
16 json.dump(list_1, fp)
17 json.dump(dict_1, fp)
View Code
test.json文件中的数据:
{"c": 3, "d": 4, "b": 2, "a": 1}
load() --- 加载一杯存储在文件中的json数据。
调用:json.load(fp)
例如(是json.loads()的封装,可以发现数据加载回来后,数据类型没有发生变化):
import json
filename = "test.json"
with open(filename, 'r') as fp:
dict_1 = json.load(fp)
print(type(dict_1))
print(dict_1)
>>> <class 'dict'>
>>> {'b': 2, 'a': 1, 'd': 4, 'c': 3}
loads() --- 加载python数据。
调用:json.loads(s) (s指从文件中读出来的数据)
例如(相当于先读取再加载):
import json
filename = "test.json"
with open(filename, 'r') as fp:
s = fp.read(fp)
dict_1 = json.loads(s)
print(type(dict_1))
print(dict_1)
pickle常用方法(使用等同于json中方法的使用,不过pickle支持更为复杂的数据类型,如果你的数据只用于python程序,推荐使用pickle):
dumps() ---
dump() ---
load() ---
loads() ---
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。