Python中json模块的使用指南:序列化与反序列化详解
本文详解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模块的资料,欢迎持续关注本站的其他相关文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









