更新和删除 JSON 对象
在 Python 中更新 JSON 对象就像使用我们导入的 json 包中的内置 update() 函数一样简单。
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 关键字删除该键值对。
字节转 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 字符串。
JSON 到 SQL
将 JSON 对象转换为 SQL 表需要一些另外的步骤,而不仅仅是使用单一方法。
这里我们使用了两个我们以前没有使用过的新包。
首先是 Pandas 包,它是一个数据分析工具。
我们将使用它来将我们的 JSON 对象转换为 Pandas DataFrame。
第二个包是 sqlalchemy。
这个包是一个数据库工具包和一个对象关系映射器(ORM)。
以下是我们如何导入可以导入这些包:
语法:
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 对象,我们可以看到已创建表并插入数据。
将 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)
首先,我们以读取模式打开文件并将文件内容存储到变量“data”中。
然后我们更新“数据”并将新的键值对添加到这个变量中。
之后,我们再次以写入模式打开文件。
我们使用 json.dump() 函数并将其作为参数传递给数据和文件,然后关闭文件。
输出显示数据已更新,我们可以通过查看 json 文件来确认这一点。
JSON dumps()VS loads()
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)
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)
在这里,我们将数据加载到变量“data”中,然后将此字典作为关键字参数传递给Car类。
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 对象以键值对的形式构建,这使得从对象中获取特定值变得非常简单。
我们可以使用字典索引来访问与键关联的值。
语法:
data['firstname']
下面的代码演示了我们如何使用它来获得我们想要的结果。
代码:
import json jsonFile = open('jsonData.json') data = json.load(jsonFile) print(data['firstname']) jsonFile.close()
读取 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
可以使用我们之前讨论过的相同 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.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 对象,我们可以在打印时看到输出。
将 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 的字符串。
JSON load() VS loads()
这两者的区别在于,在 load() 方法中,我们将 JSON 文件作为参数传递,然后我们可以将其存储在一个变量中。
在 load() 方法中,我们传递一个 JSON 字符串,该字符串定义为 Python 变量并将该字符串序列化为 JSON 对象。
以下代码示例显示了此功能。
load()代码:
import json jsonFile = open('jsonData.json') data = json.load(jsonFile) print(data) jsonFile.close()
loads()代码:
import json jsonData = '{"Name": "Hamza", "ID":"12345"}' data = json.loads(jsonData) print(data)
解析 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”中的字典。
打印语句验证该方法是否成功运行。
在本教程中,我们将学习各种 JSON 处理技术,例如加载 JSON 对象、编写、排序 JSON 或者解析 JSON 等。
JSON 是 JavaScript Object Notation的缩写,代表JavaScript对象注释,表示结构化数据。
JSON 数据用于交换信息。
在 Python 中,我们可以通过导入名为 json 的 Python 内置模块来使用 JSON。
json 模块对 JSON 数据进行编码和解码。
为什么要使用 JSON?
JSON 包含可以被人类和机器读取的数据。
在 Python 中使用 JSON 的主要目的是存储和检索列表、元组和字典。
大多数 API 使用 JSON 格式来传递信息。
同样,如果我们有大量数据,我们可以将数据编码为 JSON 格式并将其存储在数据库中。
加载这个包的语法如下:
import json