使用JSON模块在Python中存储数据

105 阅读6分钟

在靠近用户的地方部署容器

本工程教育(EngEd)计划由科支持。

在全球范围内即时部署容器。Section是经济实惠、简单而强大的。

免费入门

使用JSON模块在Python中存储数据

7月7日, 2021

某些程序可能需要不同类型的数据来被用户接受。无论程序的目的是什么,你都需要像列表和字典这样的数据结构来存储它们。你总是希望在用户关闭你的程序之前保存他们所输入的数据。最简单的方法是使用JSON模块来存储你的数据。

在本教程中,我们将研究如何使用JSON模块在Python中存储数据。我们还将学习如何使用json.dump()json.dumps() 方法,json.load()json.loads() 方法,以及它们的区别。最后,我们将看看如何在Python中把JSON序列化和反序列化为Object。

前提条件

有一些Python编程语言的基本知识。

为什么使用JSON模块在Python中存储数据?

  1. 使开发者能够将简单的数据结构转储到一个文件中,并在需要时加载它们
  2. 可以使用JSON在Python程序之间共享数据
  3. JSON格式是与平台或语言无关的。当你以JSON格式存储数据时,你也可以在其他编程语言中轻松使用它们。
  4. 它简单易学,而且是一种可移植的格式

使用json.dump()

要使用json.dump() 功能,先导入json 模块。要导入json 模块,请使用import jsonjson.dump() 帮助将数据写入JSON文件中。

语法。

json.dump(data, file)

json.dump() 函数接收两个参数。

  1. 需要被写入JSON文件的数据。
  2. 一个可以用来保存数据的文件对象

让我们开发一个快速程序来保存一组数字到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()的区别

  1. dump() 方法需要两个参数(数据和文件),而dumps() 方法只需要一个参数(数据)。
  2. 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

类似文章

[

How to Create a Reusable React Form component Hero Image

语言

如何创建一个可重复使用的React表单组件

阅读更多

](www.section.io/engineering…

Building a payroll system with next.js Hero Image

语言, Node.js

用Next.js构建一个薪资系统

阅读更多

](www.section.io/engineering…

Creating and Utilizing Decorators in Django example image

架构

在Django中创建和使用装饰器

阅读更多

](www.section.io/engineering…)