把Pyhton数据转化为JSON格式的过程叫做序列化,把JSON格式转化为Python数据类型的过程叫反序列化。

import json #导入json模块
d = {'Bob': 20, 'Jam': '31', 'Linda': 13} #定义字典对象d
print('字典格式:', d) #打印字典
d_json= json.dumps(d) #通过dumps把字典对象转为JSON类型
print('JSON格式:', d_json) #打印JSON
d_json_p = json.loads(d_json) #把JSON格式转为Python的字典格式
print('字典格式:', d_json_p) #打印字典

Python的json模块为读写JSON文件提供了
d
u
m
p
\color{red}{dump}
dump和
l
o
a
d
\color{red}{load}
load操作对象。
json.dump(obj,f,ensure_ascii=True):用于把Python数据写入JSON文件。
obj参数:为Python语言数据对象。
f参数:以字符串形式指明需要存储的文件名,可以带路径,建议加上拓展名。
ensure_ascii参数:默认值为True,只接受ASCII表里的数据类型;为False时,可以接受其他非ASCII类型的数据(包括中文)。
json.load(f,...):从JSON文件里读取数据并转为Python数据类型。f参数:以字符串形式指明需要存储的文件名。
import json #导入json模块
import sys #导入sys模块
def writeToJSON(filename, dictObject):
'''定义写JSON文件函数'''
flag = False
if type(dictObject) != dict: #只允许字典类型数据保存
return flag
try: #捕捉异常
f = open(filename, 'w') #以写方式的打开指定的JSON文件
json.dump(dictObject, f, ensure_ascii=False) #以JSON格式写入数据
flag = True
except:
print('往%s文件写入数据出错!'%(filename))
finally:
if flag:
f.close() #写完数据,关闭文件
return flag #返回写文件是否正常标志值
def readFromJSON(filename):
'''定义读JSON文件函数'''
flag = False
dictObject = {}
try:
f = open(filename, 'r') #打开需要读的JSON文件
dictObject = json.load(f) #读取JSON文件数据并转为Python的字典对象
flag = True
except:
print('从$s读取JSON数据出错!'%(filename))
finally:
if flag:
f.close() #关闭读取文件
return dictObject #返回读取字典类型数据
c = {'name':'Bob', 'age': 18, 'birthday':'2003年10月20日'}
filename = 'info.json' #指定JSON的文件名称
f_json = writeToJSON(filename, c) #调用writeToJSON函数将数据写入JSON文件
if f_json:
print('信息保存至JSON文件成功!')
else:
sys.exit() #调用writeToJSON函数失败,退出程序
g_c = readFromJSON(filename) #调用readFromJSON函数读取文件中的数据
if g_c:
print(g_c) #打印返回的字典对象数据
执行结果如下:

在脚本的路径下可以发现“info.json”文件,打开内容如下:
