149 lines
3.5 KiB
Markdown
149 lines
3.5 KiB
Markdown
# 将 JSON 序列化和反序列化为 Python 中的对象
|
||
|
||
> 原文:<https://www.askpython.com/python/examples/serialize-deserialize-json>
|
||
|
||
读者朋友们,你们好!在本文中,我们将关注 Python 中 JSON 到对象的**序列化和反序列化的概念。**
|
||
|
||
所以,让我们开始吧!!🙂
|
||
|
||
在处理数据和 API 时,我们会遇到字典或 JSON 格式的数据。有时,我们需要一些函数来实现它们之间的相互转换。我们将了解一些序列化和反序列化数据的方法。
|
||
|
||
***也读作: [Python JSON 模块](https://www.askpython.com/python-modules/python-json-module)***
|
||
|
||
* * *
|
||
|
||
## Python 中 JSON 数据的序列化
|
||
|
||
序列化是将原始数据的数据类型转换成 JSON 格式的过程。因此,我们的意思是说,原始数据通常是一个[字典](https://www.askpython.com/python/dictionary/python-dictionary-dict-tutorial)现在将遵循 Javascript 对象符号格式。
|
||
|
||
同样,Python 为我们提供了下面的函数来轻松地将我们的数据公式化为 JSON——
|
||
|
||
1. **json.dump()函数**
|
||
2. **json.dumps()函数**
|
||
|
||
### json.dump()函数
|
||
|
||
在 json.dump()函数中,它接受原始数据作为输入,将数据转换成 json 格式,然后存储到 JSON 文件中。
|
||
|
||
**语法**:
|
||
|
||
```py
|
||
json.dump(data, file-object)
|
||
|
||
```
|
||
|
||
* 数据:需要转换成 JSON 格式的实际数据。
|
||
* file-object:它是指向存储转换后的数据的 JSON 文件的对象。如果文件不存在,则在对象指向的位置创建一个新文件。
|
||
|
||
**举例**:
|
||
|
||
```py
|
||
import json
|
||
|
||
data= {
|
||
"details": {
|
||
"name": "YZ",
|
||
"subject": "Engineering",
|
||
"City": "Pune"
|
||
}
|
||
}
|
||
|
||
with open( "info.json" , "w" ) as x:
|
||
json.dump( data, x )
|
||
|
||
```
|
||
|
||
### json.dumps()函数
|
||
|
||
与 dump()函数不同,json.dumps()函数确实将原始数据转换为 json 格式,但将其存储为字符串,而不是指向文件对象。
|
||
|
||
**语法**:
|
||
|
||
```py
|
||
json.dumps(data)
|
||
|
||
```
|
||
|
||
**举例**:
|
||
|
||
```py
|
||
import json
|
||
|
||
data= {
|
||
"details": {
|
||
"name": "YZ",
|
||
"subject": "Engineering",
|
||
"City": "Pune"
|
||
}
|
||
}
|
||
res = json.dumps(data)
|
||
print(res)
|
||
|
||
```
|
||
|
||
**输出—**
|
||
|
||
```py
|
||
{"details": {"name": "YZ","subject": "Engineering","City": "Pune"}}
|
||
|
||
```
|
||
|
||
* * *
|
||
|
||
## JSON 数据的反序列化
|
||
|
||
理解了反序列化之后,现在让我们颠倒一下这个过程。
|
||
|
||
也就是说,通过反序列化,我们可以很容易地将 JSON 数据转换成默认/本地数据类型,通常是一个字典。
|
||
|
||
同样,Python 为我们提供了以下函数来实现反序列化的概念
|
||
|
||
1. **json.load()函数**
|
||
2. **json.loads()函数**
|
||
|
||
* * *
|
||
|
||
### json.load()函数
|
||
|
||
这里,load()函数使我们能够将 JSON 数据转换成本地字典格式。
|
||
|
||
**语法**:
|
||
|
||
```py
|
||
json.load(data)
|
||
|
||
```
|
||
|
||
**举例**:
|
||
|
||
在这个例子中,我们首先使用 [open()函数](https://www.askpython.com/python/built-in-methods/python-open-method)加载 JSON 文件。之后,我们将引用 JSON 文件的对象传递给 load()函数,并将其反序列化为[字典](https://www.askpython.com/python/dictionary/python-dictionary-dict-tutorial)的形式。
|
||
|
||
```py
|
||
import json
|
||
|
||
data = open('info.json',)
|
||
|
||
op = json.load(data)
|
||
|
||
print(op)
|
||
print("Datatype after de-serialization : " + str(type(op)))
|
||
|
||
```
|
||
|
||
**输出**:
|
||
|
||
```py
|
||
{"details": {"name": "YZ","subject": "Engineering","City": "Pune"}}
|
||
Datatype after de-serialization : <class 'dict'>
|
||
|
||
```
|
||
|
||
* * *
|
||
|
||
## 结论
|
||
|
||
到此,我们就结束了这个话题。如果你遇到任何问题,欢迎在下面评论。
|
||
|
||
更多与 Python 编程相关的帖子,请继续关注我们。
|
||
|
||
在那之前,学习愉快!🙂 |