哆啦A梦 50周年应援

JSON实现序列化dump和dumps方法,JSON实现反序列化loads和load方法

通过文件操作,我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表、字典、元组等),就无
法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。
设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字
节序列恢复到内存中,就是反序列化。
对象—>字节序列 === 序列化
字节序列—>对象 ===反序列化
Python中提供了JSON这个模块用来实现数据的序列化和反序列化。
 
JSON模块
JSON(JavaScriptObjectNotation, JS对象简谱)是一种轻量级的数据交换标准。JSON的本质是字符串
 
使用JSON实现序列化
JSON提供了dump和dumps方法,将一个对象进行序列化。
 
dumps方法的作用是把对象转换成为字符串,它本身不具备将数据写入到文件的功能。
import json 
file = open('names.txt', 'w') 
names = ['zhangsan', 'lisi', 'wangwu', 'jerry', 'henry', 'merry', 'chris'] 
# file.write(names) 出错,不能直接将列表写入到文件里 
# 可以调用 json的dumps方法,传入一个对象参数 result = json.dumps(names)
# dumps 方法得到的结果是一个字符串
print(type(result))
# <class 'str'>
#
可以将字符串写入到文件里
file.write(result)

file.close()
dump方法可以在将对象转换成为字符串的同时,指定一个文件对象,把转换后的字符串写入到这个文件里
import json 
file = open('names.txt', 'w') 
names = ['zhangsan', 'lisi', 'wangwu', 'jerry', 'henry', 'merry', 'chris'] 

# dump方法可以接收一个文件参数,在将对象转换成为字符串的同时写入到文件里
json.dump(names, file) 

file.close()
 
使用JSON实现反序列化
使用loads和load方法,可以将一个JSON字符串反序列化成为一个Python对象。
 
loads方法需要一个字符串参数,用来将一个字符串加载成为Python对象
import json 
# 调用loads方法,传入一个字符串,可以将这个字符串加载成为Python对象
result = json.loads('["zhangsan", "lisi", "wangwu", "jerry", "henry", "merry", "chris"]') 
print(type(result)) # <class 'list'>
load方法可以传入一个文件对象,用来将一个文件对象里的数据加载成为Python对象
import json 

# 以可读方式打开一个文件 
file = open('names.txt', 'r') 

# 调用load方法,将文件里的内容加载成为一个Python对象 
result = json.load(file) 

print(result) # ["zhangsan", "lisi", "wangwu", "jerry", "henry", "merry", "chris"]
file.close()

一些操作

# fp = open('test.txt','w')
# # 默认情况我们只能将字符串写入到文件中
# fp.write('hello world')
#
# fp.close()


# fp = open('test.txt','w')
# # 默认情况下报错 对象是无法写入到文件中  如果想写入到文件 那么必须使用序列化操作
# name_list = ['zhangsan','lisi']
#
# fp.write(name_list)

-----------------------------------------------------------------------------------------
# 序列化的2种方式
# dumps
# (1)创建一个文件
# fp = open('test.txt','w')
#
# # (2)定义一个列表
# name_list = ['zs','ls']
#
# # 导入json模块到该文件中
# import json
# # 序列化
# # 将python对象 变成 json字符串
# # 我们在使用scrapy框架的时候  该框架会返回一个对象 我们要将对象写入到文件中 就要使用json.dumps
# #操作数据 # names = json.dumps(name_list) # print(name) #['zs', 'str']
# print(type(name)) # <class 'str'> #
# 将names写入到文件中 # fp.write(names) # fp.close() ------------------------------------------------------------------------------------------ # dump # 在将对象转换为字符串的同时,指定一个文件的对象 然后把转换后的字符串写入到这个文件里 # fp = open('text.txt','w') # # # # name_list = ['zs','ls'] # # # # import json # # 相当于names = json.dumps(name_list) 和 fp.write(names)
# # 操作文件
# # json.dump(name_list,fp) # # # # fp.close() -------------------------------------------------------------------------------------------- # 反序列化 # 将json的字符串变成一个python对象 # fp = open('text.txt','r') # # content = fp.read() # # # 读取之后 是字符串类型的 # print(content) #['zs', 'ls'] # print(type(content)) # <class 'str'> # # # loads # import json # # 将json字符串变成python对象 # 操作数据
#
result = json.loads(content) # # 转换之后 # print(result) #['zs', 'ls'] # print(type(result)) # <class 'list'> -------------------------------------------------------------------------------------------- # load fp = open('text.txt','r') import json # 操作文件 result = json.load(fp) print(result) # ['zs', 'ls'] print(type(result)) # <calss 'list'> fp.close()
posted @ 2021-11-09 17:39  秋泊ソース  阅读(792)  评论(1编辑  收藏  举报