Python JSON处理教程:如何使用JSON?

2021年9月15日20:37:13 发表评论 812 次浏览

在本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()

输出:

Python JSON处理教程:如何使用JSON?

如果我们有一个存储 JSON 对象的字符串,我们可以使用 load() 方法来读取该字符串。

句法:

data = json.loads(jsonString)

以下代码打印 JSON 字符串:

代码:

import json

jsonData = '{"Name": "Hamza", "ID":"12345"}'

data = json.loads(jsonData)

print(data)

输出:

Python JSON处理教程:如何使用JSON?

获取 JSON 值

Python如何处理JSON?JSON 对象以键值对的形式构建,这使得从对象中获取特定值变得非常简单。我们可以使用字典索引来访问与键关联的值。

句法:

data['firstname']

下面的代码演示了我们如何使用它来获得我们想要的结果。

代码:

import json

jsonFile = open('jsonData.json')

data = json.load(jsonFile)

print(data['firstname'])

jsonFile.close()

输出:

Python JSON处理教程:如何使用JSON?

更新和删除 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)

输出:

Python JSON处理教程:如何使用JSON?

字典“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)

输出:

Python JSON处理教程:如何使用JSON?

让我们来看看这里到底发生了什么。当我们检查字典中是否存在 '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))

输出:

Python JSON处理教程:如何使用JSON?

查看代码,很容易理解发生了什么。首先,我们加载数据并将其存储到变量“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处理教程:如何使用JSON?

这里我们将一些数据定义为 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处理教程:如何使用JSON?

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'])

输出:

Python JSON处理教程:如何使用JSON?

在此代码中,我们将 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)

输出:

Python JSON处理教程:如何使用JSON?

在这段代码中,我们首先创建了一个 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处理教程:如何使用JSON?

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)

输出:

Python JSON处理教程:如何使用JSON?

这里我们首先定义了一个字节字符串,然后将其解码为'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)

输出:

Python JSON处理教程:如何使用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
Python JSON处理教程:如何使用JSON?

根据 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()

输出:

Python JSON处理教程:如何使用JSON?

代码:(load())

import json

jsonData = '{"Name": "Hamza", "ID":"12345"}'

data = json.loads(jsonData)

print(data)

输出:

Python JSON处理教程:如何使用JSON?

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处理教程:如何使用JSON?

我希望你喜欢这个Python JSON处理教程,希望以上内容可以帮助到你,如有任何问题,请在下方评论和分享。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: