JSON实现序列化dump和dumps方法,JSON实现反序列化loads和load方法
阅读原文时间:2023年07月08日阅读:3

通过文件操作,我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表、字典、元组等),就无

法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。

设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字

节序列恢复到内存中,就是反序列化。

对象—>字节序列 === 序列化

字节序列—>对象 ===反序列化

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)) #

# 可以将字符串写入到文件里
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)) #

load方法可以传入一个文件对象,用来将一个文件对象里的数据加载成为Python对象

import json

以可读方式打开一个文件

file = open('names.txt', 'r')

调用load方法,将文件里的内容加载成为一个Python对象

result = json.load(file)

print(result)
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)) #

# 将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)) #

# loads

import json

# 将json字符串变成python对象

操作数据

# result = json.loads(content)

# 转换之后

print(result) #['zs', 'ls']

print(type(result)) #


load

fp = open('text.txt','r')

import json

操作文件

result = json.load(fp)

print(result) # ['zs', 'ls']
print(type(result)) #

fp.close()

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器