Python中json模块的使用指南:序列化与反序列化详解

小岛来信
小岛来信
发布时间:2026-10-14| 3人浏览过
原创

本文详解Python中json模块的核心功能,涵盖JSON基础语法、与Python字典的区别,以及序列化(dumps/dump)和反序列化(loads/load)的具体用法。通过代码实例展示如何将字典转换为JSON字符串、读取及写入JSON文件,并整理类型转换对照表,帮助开发者高效处理数据交换。

JSON基础概念与语法

首先,我们需要了解JSON的基本概念。

JSON全称为JavaScript Object Notation(JavaScript对象表示法)。

作为一种轻量级的数据交换格式,JSON完全独立于任何编程语言,以纯文本形式存在。在Web开发中,后端应用程序通常将响应数据封装为JSON格式返回给客户端。

JSON的基本语法基于名称/值对。其书写格式为:字段名称(必须包含在双引号中),后跟冒号(:),最后是具体的值。

JSON最常用的格式是对象的键值对结构。其中,key必须是字符串类型,而value可以是对象、数组、字符串、数字、布尔值(true/false)或null。


{
"sites": [
{ "name":"360" , "url":"www.360.com" }, 
{ "name":"google" , "url":"www.google.com" }, 
{ "name":"baidu" , "url":"www.baidu.com" }
]
}
  • 键名由双引号包裹,紧随其后的是冒号“:”,接着是该键对应的值;
  • 值的数据类型可以是字符串、数字、数组等;
  • 多个对象之间使用逗号进行分隔;
  • 花括号“{}”用于保存对象;
  • 方括号“[]”用于保存数组;

JSON与Python字典的区别

JSON格式与Python中的字典(dict)在外观上非常相似,但两者存在显著区别。

1)JSON的key只能是字符串,而Python字典的key可以是任何可哈希的对象,例如字符串、数字、元组等;

2)字典是一种数据结构,JSON是一种数据格式。字典拥有许多内置函数和多种调用方法,具备操作性;而JSON仅是数据打包的一种格式,不具备字典那样的操作功能;

3)JSON字符串强制要求使用双引号,而Python字典中的字符串键可以使用单引号或双引号;

通常情况下,我们会将JSON数据转换为Python中的字典或列表,以便进行后续操作。

Python json模块核心方法

Python处理JSON数据主要依赖内置的json模块。

Python3的标准库提供了json模块,能够方便地进行JSON数据的转换和处理。核心功能主要包括序列化(使用json.dumps()和json.dump())和反序列化(使用json.loads()和json.load())。

关于序列化和反序列化的定义:

将对象转换为可通过网络传输或存储到本地磁盘的数据格式(如XML、JSON或特定格式的字节串)的过程称为序列化;反之,将数据格式还原为对象的过程称为反序列化。

JSON模块中常用的方法如下:

  • json.dumps():将Python中的对象转换为JSON格式的字符串对象;
  • json.dump():将Python对象转换为JSON字符串,并直接输出到文件指针(fp)流中;
  • json.loads():将JSON格式的字符串对象转换为Python中的对象;
  • json.load():读取包含JSON对象的文件,并将其转换为Python对象;

一个简便的记忆方法是:方法名带“s”的通常与字符串处理相关,不带“s”的通常与文件操作相关。

JSON序列化与反序列化实例

以下是具体的代码实例演示。

演示如何将Python字典转换为JSON字符串。


import json
dic = {'name': 'xiaoming', 'age': 29}
json_str = json.dumps(dic)#返回json字符串
print(json_str)
print(type(json_str))
输出:
{"name": "xiaoming", "age": 29}
<class 'str'>

演示Python如何解码JSON对象。


import json
json_str ='{"id":"09", "name": "Nitin", "department":"Finance"}'
# Convert string to Python dict
dict = json.loads(json_str)
print(dict)
#转换成字典来后,要访问其中的值,可以使用字典的key来访问
print(dict['id'])
输出:
{'id': '09', 'name': 'Nitin', 'department': 'Finance'}
09

演示如何读取现有的JSON文件。


import json
with open('test1.json') as f:
  a = json.load(f)
print(a)
print(type(a))
输出:
{'sites': [{'name': '360', 'url': 'www.360.com'}, {'name': 'google', 'url': 'www.google.com'}, {'name': 'baidu', 'url': 'www.baidu.com'}]}
<class 'dict'>

演示如何将Python数据写入JSON文件。


import json
  dic ={
    "name" : "xiaoming",
    "age" : 20,
    "phonenumber" : "15555555555"
  }

  with open("test2.json", "w") as outfile:
    json.dump(dic, outfile)

  文件test.json {"name": "xiaoming", "age": 20, "phonenumber": "15555555555"}

数据类型转换对照表

Python数据类型与JSON类型之间的转换对应关系。

JSON类型转换为Python类型的对照表。

以上即为Python中json模块的详细使用指南,更多关于Python处理JSON模块的资料,欢迎持续关注本站的其他相关文章。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。