在靠近用户的地方部署容器
本工程教育(EngEd)计划由科支持。
在全球范围内即时部署容器。Section是经济实惠、简单而强大的。
免费入门。
使用JSON模块在Python中存储数据
7月7日, 2021
- 主题。
- 语言
某些程序可能需要不同类型的数据来被用户接受。无论程序的目的是什么,你都需要像列表和字典这样的数据结构来存储它们。你总是希望在用户关闭你的程序之前保存他们所输入的数据。最简单的方法是使用JSON模块来存储你的数据。
在本教程中,我们将研究如何使用JSON模块在Python中存储数据。我们还将学习如何使用json.dump() 和json.dumps() 方法,json.load() 和json.loads() 方法,以及它们的区别。最后,我们将看看如何在Python中把JSON序列化和反序列化为Object。
前提条件
有一些Python编程语言的基本知识。
为什么使用JSON模块在Python中存储数据?
- 使开发者能够将简单的数据结构转储到一个文件中,并在需要时加载它们
- 可以使用JSON在Python程序之间共享数据
- JSON格式是与平台或语言无关的。当你以JSON格式存储数据时,你也可以在其他编程语言中轻松使用它们。
- 它简单易学,而且是一种可移植的格式
使用json.dump()
要使用json.dump() 功能,先导入json 模块。要导入json 模块,请使用import json 。json.dump() 帮助将数据写入JSON文件中。
语法。
json.dump(data, file)
json.dump() 函数接收两个参数。
- 需要被写入JSON文件的数据。
- 一个可以用来保存数据的文件对象
让我们开发一个快速程序来保存一组数字到JSON文件中。为了保存这组数字,我们将使用json.dump() 函数。
import json
numbers = [10, 20, 30, 70, 191, 23] #create a set of numbers
filename = 'numbers.json' #use the file extension .json
with open(filename, 'w') as file_object: #open the file in write mode
json.dump(numbers, file_object) # json.dump() function to stores the set of numbers in numbers.json file
在这个程序中,我们把这组数字存储在numbers.json 。扩展名.json ,表明该文件包含JSON格式的数据。
然后我们以'w' 模式*(写模式*)访问该文件,以使数据能够被写入JSON文件。最后,json.dump() 函数将这组数字存储在文件numbers.json 文件中。
这个程序没有终端输出,但是当我们打开文件numbers.json ,我们看到以下数据。
[10, 20, 30, 70, 191, 23]
使用json.dumps()
json.dumps() 可用于将Python对象转换为JSON字符串。
语法。
json.dumps(data)
json.dumps() 函数需要一个参数,也就是要转换为JSON字符串的数据。
让我们看一下下面的例子。
import json
data = {
'Name' : 'Felix',
'Occupation' : 'Doctor'
}
dict_1 = json.dumps(data) # converting dictionary to JSON
print(dict_1) # {'Name' : 'Felix','Occupation' : 'Doctor'}
json.dumps()和json.dump()的区别
dump()方法需要两个参数(数据和文件),而dumps()方法只需要一个参数(数据)。dump()方法与文件操作相结合,与dumps()方法不同。
使用json.load()
我们使用json.load 函数来读取一个JSON文件。
json.load() 函数只需要一个参数,就是文件对象。
语法。
json.load(file_object)
假设,我们有一个名为student.json 的JSON文件,其中包含JSON对象。
{
"name": "Felix",
"Subjects": ["English", "Political Science"]
}
让我们写一段代码,使用json.load 函数读取存储在student.json 文件中的数据。
import json
with open(r,'student.json') as file_object:
data = json.load(file_object)
print(data) # {"name": "Felix", "Subjects": ["English", "Political Science"]}
json.load() 函数解析了JSON文件并返回一个名为data 的字典。
使用json.load()
我们使用json.loads() 方法来解析一个 JSON 字符串并返回一个 Python 对象,如一个字典。json.loads() 方法将文件内容作为一个字符串。
语法。
json.loads(json_string)
例子。
import json
# JSON string:
dict_1 = {
"Name": "Felix Maina",
"Contact Number": 0712345678,
"Email": "fely@gmail.com",
}
# parse dict_1:
y = json.loads(dict_1)
# the result is a Python dictionary:
print(y) #{ "Name": "Felix Maina", "Contact Number": 0712345678,"Email": "fely@gmail.com", }
在这里,使用json.loads() 方法解析了字符串dict_1 ,该方法返回一个名为y 的字典。
注意:
json.loads()和json.load()的主要区别是:json.loads()读取字符串,而json.load()用于读取文件。
在Python中序列化JSON数据
序列化是将一个本地数据类型转换为JSON格式的过程。
JSON 模块将一个Python字典对象转换为JSON对象。json.dump() 和json.dumps() 方法被用来将Python数据序列化为JSON格式。
让我们看看一个使用json.dump() 方法的例子。
import json
# Data to be written
details = {
"name": "Felix Maina",
"years": 21,
"school": "Makerere"
}
# Serializing JSON and writing JSON file
with open("details.json", "w") as file_object:
json.dump(details, file_object) # {"name": "Felix Maina", "years": 21, "school": "Makerere"}
在这里,我们将一个Python字典转换为JSON格式的文件,名为details.json 。
json.dumps() 方法将一个Python对象转换为JSON字符串,如下图所示。
import json
# Data to be written
details = {
"name": "Felix Maina",
"years": 21,
"school": "Makerere"
}
# Serializing JSON
json_string = json.dumps( details )
print( json_string ) #{"name": "Felix Maina", "years": 21, "school": "Makerere"}
在Python中把JSON反序列化为对象
反序列化是将JSON数据转换为本地数据类型的过程。在这里,我们将JSON数据转换回Python中的一个字典。
我们使用json.loads() 方法将JSON数据反序列化为一个Python对象。json.load() 方法也被用来将JSON格式的文件反序列化为Python对象。
例子。使用loads() 进行反序列化 # 导入该模块
# importing the module
import json
# creating the JSON data as a string
data = '{"Name" : "Felix", "status" : "married"}'
print("data before deserailizing")
print(data) #json string
# deserailizing the data
h = json.loads(data)
print("data after deserailizing")
print(h) #python dictionary
输出。
data before deserailizing
{"Name" : "Felix", "status" : "married"}
data after deserailizing
{'status': 'married', 'Name': 'Felix'}
让我们创建一个文件并将其命名为cars.json 。这个文件应该有以下数据。
{
"name": "Suzuki",
"year": 2001,
"model": "GDF10"
}
现在让我们使用load() 函数对这个文件进行反序列化。
import json
# opening the JSON file
data = open('cars.json','r')
print("Datatype before deserialization : ")
print(data) # prints the contents of the file
# deserailizing the data
h = json.load(data)
print("Datatype after deserialization : ")
print(h) # prints a python dictionary
结论
在这篇文章中,我们已经学到了以下内容。
- 使用JSON模块在Python中存储数据的原因
- 使用
json.dump(),json.dumps()和它们的区别 - 使用
json.load(),json.loads()和它们的区别 - 在Python中对JSON数据进行序列化和反序列化
进一步阅读
关于Python中JSON模块的更多信息,请看下面的链接。
同行评审贡献者:。Srishilesh P S
类似文章
[

语言
如何创建一个可重复使用的React表单组件
阅读更多

语言, Node.js
用Next.js构建一个薪资系统
阅读更多

架构
在Django中创建和使用装饰器
阅读更多