在本Python JSON处理教程中,你将学习各种 JSON 处理技术,例如加载 JSON 对象、编写、排序 JSON 或解析 JSON 等。
JSON代表代表结构化数据的JavaScript对象表示法(JavaScript Object Notation)。JSON 数据用于交换信息。
Python如何使用JSON?在 Python 中,我们可以通过导入名为 json 的 Python 内置模块来使用 JSON。json 模块对 JSON 数据进行编码和解码。
Python JSON处理指南目录
- Python如何处理JSON?为什么要使用 JSON?
- 读取 JSON 文件
- 获取 JSON 值
- 更新和删除 JSON 对象
- JSON 排序
- 创建 JSON 对象
- 将 JSON 写入文件
- 解析 JSON
- 对象转 JSON
- JSON 到对象
- 字节转 JSON
- 将 HTML 转换为 JSON
- JSON 到 SQL
- JSON 加载() VS 加载()
- JSON 转储()VS 加载()
为什么要使用 JSON?
JSON 包含可以被人类和机器读取的数据。在 Python 中使用 JSON 的主要目的是存储和检索列表、元组和字典。
大多数 API 使用 JSON 格式来传递信息。同样,如果你有大量数据,你可以将数据编码为 JSON 格式并将其存储在数据库中。
加载这个包的语法如下:
句法:
import json
读取 JSON 文件
要从 JSON 文件中读取数据,我们可以使用 load() 或 loading() 方法。
在 Python 中读取 JSON 数据意味着将 JSON 对象转换为 Python 对象。JSON 对象到 Python 对象的转换称为反序列化。例如,JSON 数组相当于 Python 中的列表。
load() 的语法如下:
句法:
data = json.load(object)
- 'object' 是执行语句后将加载的 JSON 对象,并将作为 Python 对象存储在变量 'data' 中。
考虑以下 JSON 对象:
代码:
{
"date": "2021-07-17",
"firstname": "Hamza",
"lastname": "Sher",
"city": "Kyoto",
"array": [
"Carmela",
"Ashlee",
"Alisha"
],
"array of objects": [
{
"index": 0,
"index start at 5": 5
},
{
"index": 1,
"index start at 5": 6
},
{
"index": 2,
"index start at 5": 7
}
]
}
以下代码打印 JSON 对象中键“array”的值:
代码:
import json
jsonFile = open('jsonData.json')
data = json.load(jsonFile)
print(data)
jsonFile.close()
输出:
如果我们有一个存储 JSON 对象的字符串,我们可以使用 load() 方法来读取该字符串。
句法:
data = json.loads(jsonString)
以下代码打印 JSON 字符串:
代码:
import json
jsonData = '{"Name": "Hamza", "ID":"12345"}'
data = json.loads(jsonData)
print(data)
输出:
获取 JSON 值
Python如何处理JSON?JSON 对象以键值对的形式构建,这使得从对象中获取特定值变得非常简单。我们可以使用字典索引来访问与键关联的值。
句法:
data['firstname']
下面的代码演示了我们如何使用它来获得我们想要的结果。
代码:
import json
jsonFile = open('jsonData.json')
data = json.load(jsonFile)
print(data['firstname'])
jsonFile.close()
输出:
更新和删除 JSON 对象
在 Python 中更新 JSON 对象就像使用我们导入的 json 包中的内置 update() 函数一样简单。
Python JSON处理教程:update 方法用于向我们在代码中声明的 JSON 字符串添加新的键值对。我们可以添加单个键值对或添加将附加到前一个 JSON 字符串的整个字典。
句法:
jsonObject.update(KeyValuePair)
以下代码实现了 update() 方法。
代码:
import json
jsonData = '{"ID":"123", "Name": "Hamza"}'
data = json.loads(jsonData)
newData = {"DOB": "22-10-2001"}
data.update(newData)
print(data)
输出:
字典“newData”已添加到“jsonData”对象中。这就是 update() 方法执行其功能的方式。
转到删除功能。json 包中没有内置函数来删除键值对。因此,我们将不得不编写更多代码来执行此功能。
下面是我们如何在 JSON 对象上实现删除。请记住,我们使用的 JSON 文件与我们在本教程开头提到的相同。
代码:
import json
file = open('jsonData.json', 'r')
data = json.load(file)
file.close()
if 'firstname' in data:
del data['firstname']
print(data)
输出:
让我们来看看这里到底发生了什么。当我们检查字典中是否存在 'firstname' 时,Python 会检查字典,如果键存在,我们可以使用 del 关键字删除该键值对。
Python JSON处理指南:JSON 排序
我们可以根据键按字母顺序对 JSON 对象进行排序。为此,我们使用 json.dumps() 方法以及该方法的一些参数。使用此方法的语法如下:
句法:
json.dumps(data, sort_keys=True)
这里我们将两个参数传递给函数 json.dumps()。第一个“数据”包含我们存储在 Python 变量中的 JSON 对象。
第二个是 sort_keys 参数,当设置为 True 时,按字母顺序对数据进行排序并以字符串形式返回 JSON 对象。以下代码使用此功能:
代码:
import json
file = open('jsonData.json', 'r')
data = json.load(file)
file.close()
print(json.dumps(data, sort_keys=True))
输出:
查看代码,很容易理解发生了什么。首先,我们加载数据并将其存储到变量“data”中,然后关闭文件。
然后在单个语句中,我们在函数 json.dumps() 和 sort_keys=True 参数的帮助下打印排序的数据。
创建 JSON 对象
要创建一个 JSON 对象,我们需要有一个包含我们数据的 Python 字典。我们将使用与之前使用的方法相同的方法,即 json.dump() 和 json.loads()。下面的代码实现了这个功能:
代码:
import json
data = {"Name":"John Doe", "ID":"123"}
json_dump = json.dumps(data)
json_data = json.loads(json_dump)
print(json_data)
输出:
这里我们将一些数据定义为 Python 字典。然后我们使用 json.dumps() 方法并将 Python 字典作为参数传递。
这会将我们的 Python 字典转换为可以传递给 json.loads() 方法的字符串。然后 json.loads() 方法将此字符串转换为 JSON 对象,我们可以在打印时看到输出。
将 JSON 写入文件
要将 JSON 对象写入 JSON 文件,我们可以使用 json.dump() 方法。此方法获取我们将写入文件的数据以及我们将数据写入的文件。下面的代码解释了我们如何做到这一点!
代码:
import json
file = open('jsonData.json', 'r')
data = json.load(file)
file.close()
newData = {"DOB": "22-10-2001"}
data.update(newData)
file = open('jsonData.json', 'w')
json.dump(data, file)
file.close()
print(data)
输出:
Python如何使用JSON?首先,我们以读取模式打开文件并将文件内容存储到变量“data”中。然后我们更新“数据”并将新的键值对添加到这个变量中。
之后,我们再次以写入模式打开文件。我们使用 json.dump() 函数并将其作为参数传递给数据和文件,然后关闭文件。
输出显示数据已更新,我们可以通过查看 json 文件来确认这一点。
解析 JSON
我们可以通过简单地使用 json.loads() 方法来解析 Python 中的 JSON 字符串。此方法将 JSON 字符串转换为 Python 字典,该字典可以根据字典中存在的键进行索引。
句法:
json.loads(jsonString)
这里的 'jsonString' 是作为参数传递到方法中的 JSON 字符串。该方法将解析 JSON 字符串并返回一个 Python 字典,该字典可以进一步存储在变量中。
我们还可以对这个变量执行所有字典方法。下面的代码实现了这个功能。
代码:
import json
data = '{"Name":"John Doe", "ID":"123"}'
json_data = json.loads(data)
print(json_data['Name'])
输出:
在此代码中,我们将 JSON 字符串“data”作为参数传递给方法 json.loads(),该方法返回存储在变量“json_data”中的字典。打印语句验证该方法是否成功运行。
Python JSON处理教程:对象转 JSON
可以使用我们之前讨论过的相同 json.dumps() 方法将 Python 对象转换为 JSON。让我们来看看这将如何完成。
代码:
import json
class Car:
def __init__(self, model, make, engine_capacity):
self.model = model
self.make = make
self.engine_capacity = engine_capacity
car_1 = Car('2001', 'Honda', '1.8L')
json_data = json.dumps(car_1.__dict__)
print(json_data)
输出:
在这段代码中,我们首先创建了一个 Car 类,然后创建了这个类的对象。
然后我们将使用 json.dumps() 函数并将汽车对象作为“car.__dict__”传递。'__dict__' 将所有成员变量转换为字典并将其传递给 json.dumps() 方法。
正如我们从输出中看到的,对象已被转换为 JSON。
JSON 到对象
要将 JSON 字符串转换为 Python 对象,我们需要一个类,我们必须创建其对象并使用 json.loads() 方法,如下所示:
代码:
import json
class Car:
def __init__(self, model, make, engine_capacity):
self.model = model
self.make = make
self.engine_capacity = engine_capacity
json_data = '{"model": "2001", "make": "Honda", "engine_capacity": "1.8L"}'
data = json.loads(json_data)
car_1 = Car(**data)
print(car_1.engine_capacity, car_1.make, car_1.model)
输出:
Python如何处理JSON?在这里,我们将数据加载到变量“data”中,然后将此字典作为关键字参数传递给汽车类。我们可以在输出中看到对象已经创建。
字节转 JSON
将字节字符串或字典转换为 JSON 非常简单。我们只需要使用内置的 json.dumps() 函数。
句法:
json.dumps(bytesString)
以下代码说明了此功能。
代码:
import json
byte_str = b'{"Name":"Hamza", "ID":"123"}'
dec_str = byte_str.decode('utf-8')
data = json.dumps(dec_str)
print(data)
输出:
这里我们首先定义了一个字节字符串,然后将其解码为'utf-8' 字符集。之后,我们简单地使用 json.dumps() 将字符串转换为 JSON 字符串。
Python如何使用JSON?将 HTML 转换为 JSON
要将 HTML 转换为 JSON 对象,我们必须使用另一个名为 html-to-json 的 Python 包。这个包所做的基本上是将一个 HTML 文件转换成一个 JSON 对象。
我们可以通过在命令提示符或终端中使用以下命令来安装此软件包:
句法:
pip install html-to-json
首先,我们需要将它导入到我们的程序中。
句法:
import html_to_json
导入后,我们现在可以编写代码将 HTML 文件转换为 JSON 对象。这是我们将使用的示例 HTML 文件:
代码:
<!doctype html>
<html lang="en-US">
<head>
<title>Sample Html Doc</title>
</head>
<body>
<div>
<h1>First Heading</h2>
<p>This is a sample HTML Doc</p>
</div>
</body>
</html>
现在,我们将继续编写代码以将此 HTML 转换为 JSON。
代码:
import json
import html_to_json
file = open("sample.html", "r")
html = file.read()
file.close()
output_json = html_to_json.convert(html)
print(output_json)
输出:
在这段代码中,我们使用 html-to-json 包将 HTML 转换为 json。为此,我们使用了 html_to_json.convert() 方法并传递包含所需 HTML 的字符串。
Python JSON处理教程:JSON 到 SQL
将 JSON 对象转换为 SQL 表需要一些额外的步骤,而不仅仅是使用单一方法。这里我们使用了两个以前没有使用过的新包。
首先是 Pandas 包,它是一个数据分析工具。我们将使用它来将我们的 JSON 对象转换为Pandas DataFrame。
第二个包是 sqlalchemy。这个包是一个数据库工具包和一个对象关系映射器(ORM)。以下是我们如何 import 可以导入这些包:
句法:
import pandas as pd
from sqlalchemy import create_engine
这里的 create_engine 是一个帮助我们连接SQLite 数据库的方法。以下代码说明了此功能:
代码:
import json
import pandas as pd
from sqlalchemy import create_engine
with open("jsonsample.json") as f:
data = json.load(f)
df = pd.DataFrame(data)
engine = create_engine("sqlite:///my_data.db")
df.to_sql("Sample_Data", con=engine)
当我们运行此代码时,会创建一个名为“my_data.db”的数据库。之后,数据被插入到数据库中的表名“Sample_Data”下。
我们可以通过在命令提示符或终端中运行以下命令来确认这一点:
代码:
$ sqlite my_data.db
sqlite> .schema
根据 JSON 对象,你可以看到已创建表并插入数据。
Python如何处理JSON?JSON 加载() VS 加载()
这两者的区别在于,在 load() 方法中,我们将 JSON 文件作为参数传递,然后我们可以将其存储在一个变量中。
Python JSON处理指南:在 load() 方法中,我们传递一个 JSON 字符串,该字符串定义为 Python 变量并将该字符串序列化为 JSON 对象。以下代码示例显示了此功能。
代码:(load())
import json
jsonFile = open('jsonData.json')
data = json.load(jsonFile)
print(data)
jsonFile.close()
输出:
代码:(load())
import json
jsonData = '{"Name": "Hamza", "ID":"12345"}'
data = json.loads(jsonData)
print(data)
输出:
JSON dumps() VS loads()
Python如何使用JSON?json.loads() 和 json.dumps() 方法是对立的。json.loads() 方法接受一个字符串并返回一个可以进一步使用的 JSON 对象。
而 json.dumps() 方法接受一个 JSON 对象并返回一个包含所有数据的字符串。
以下代码示例说明了此功能:
代码:
import json
json_data = '{"Name":"Hamza", "ID":"123"}'
data = json.loads(json_data)
print("loads method: ", data)
dumps_data = json.dumps(data)
print("dumps method: ", dumps_data)
输出:
我希望你喜欢这个Python JSON处理教程,希望以上内容可以帮助到你,如有任何问题,请在下方评论和分享。