本文共 1011 字,大约阅读时间需要 3 分钟。
json 是一种轻量级的数据交换格式,也是完全独立于任何程序语言的文本格式。
本文介绍json字符串的序列化与反序列化问题。
1、在json模块中,dump()
和 dumps()
都实现了序列化。
dump()
:将dict
对象序列化到文件中(文件中存储json字符串)。
import jsona_dict = { 'a': 11, 'b': 22}a_str = json.dump(a_dict, open('demo.json', 'w'))
dumps()
:将dict
对象序列化为json字符串,仍在内存中。
import jsona_dict = { 'a': 11, 'b': 22}a_str = json.dumps(a_dict)print(type(a_dict)) #print(type(a_str)) #
2、在json模块中,load()
和 loads()
都实现反序列化。
load()
:针对文件句柄,从文件中读取json字符转换为dict
。
import jsona_json = json.load(open('demo.json', 'r'))print(type(a_json)) #print(a_json) # {'a': 11, 'b': 22}
loads()
:针对内存对象,将json字符串转换为dict
。
import jsona_str = '{"a": 11, "b": 22}'a_json = json.loads(a_str)print(type(a_json)) #print(a_json) # {'a': 11, 'b': 22}
注意:json字符串的key为单引号时,用json.loads()
会报错。
a_str = "{'a': 11, 'b': 22}"a_json = json.loads(a_str)# json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
转载地址:http://szrvf.baihongyu.com/