注册 登录
Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元祖类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python项目实战

首页 > Python基础教程 > 第十五章: Python文件处理 > 15.5节:使用Json模块读写Json文件

15.5节:使用Json模块读写Json文件

薯条老师 2020-05-24 08:54:33 207246 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python,Java小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Java后端开发。授课详情请点击:http://chipscoco.com/?cate=6

15.5.1 什么是json文件

json的全称为JavaScript Object Notation,是javascript的对象标记语言,用于将javascript对象序列化为JSON格式的字符串。所谓的json文件,特指json格式的文件。

image.png



javascript与Python一样,也是一种解释型的脚本语言。

15.5.2 json数据格式

json这种数据格式类似于Python中的列表类型和字典类型:由符号[]括起来的数据集合,或由花括号{}括起来的键值对。

在键值对的数据格式中,键名必须为字符串类型,键值可为以下六种类型:

image.png

在json的数据格式中,键值的数据类型可以相互嵌套,由此组合成比较复杂的json格式。

json格式举例:

{
"language":{
    "programming": ["Python","C++","java"],
    "natural": [{"chinese":["湖南话","粤语"]},{"english":{"英国英语","北美英语"}}], 
    }
 }

15.5.3 Python中的json模块

在Python内置的json模块中,分别提供了dumps方法以及loads方法。前者将Python中的数据对象序列化为json格式,后者将json格式的文本反序列化为Python中的数据对象。

(1) json.dumps(obj, ensure_ascii=True)
参数obj表示Python中的数据对象,参数ensure_ascii表示数据对象是否为ascii编码。当数据对象中包含非ascii编码的字符时,需要传递False。 dumps方法会返回一个json格式的字符串。

在Python中并不是所有数据类型都可以进行序列化,在Python中可序列化的数据类型有:整型,浮点类型,布尔类型,字符串,列表,元组,字典。在实际开发中,使用较多的是将列表和字典序列化为json格式,然后写入到json文件中。

代码实例:

# __desc__ = 使用json模块的dumps方法进行序列化
 
# 使用json模块,必须先执行import进行导入
import json
 
# 定义一个字典类型的变量
data = {
"language":{
"programming": ["Python","C++","java"],
"natural": [{"chinese":["湖南话","粤语"]},{"english":["英国英语","北美英语"]}], 
}
}
 
# 由于字典data中包含非ascii字符,所以要指定ensure_ascii的值为False
json_data = json.dumps(data, ensure_ascii=False)
 
# 将json格式的数据写入到文件中,指定utf-8编码
open("config.json","w",encoding="utf-8").write(json_data)
执行完上面的程序时,会在当前目录发现一个config.json的json文件。打开该文件,可以看到以下内容:

image.png

(2) json.loads(s)

通过json模块的loads方法,可以将json格式的文本反序列化为Python中的数据类型。参数s表示json文件中的文本或bytes类型。现在通过loads方法将上文config.json中的文本反序列化为Python中的字典类型:
代码实例:

# __desc__ = 使用json模块的loads方法进行反序列化
 
# 使用json模块,必须先执行import进行导入
import json
 
# 读取json文件中的数据,注意encoding参数指定的编码
json_str = open("config.json","r",encoding="utf-8").read()
 
# 执行loads方法将json_str反序列化
data = json.loads(json_str)
 
# 输出data的类型
print(type(data))
# 输出为<class 'dict'>

15.5.4 json文件的应用场景

在上文的代码实例中,薯条老师有意将文件命名为config.json。config单词有配置的意思,在企业开发中,通常使用json文件作为程序的配置文件。将项目的配置信息,例如数据库的地址信息,登录信息等单独写入到配置文件中,会让项目的整体结构看起来更清晰:代码文件负责项目的执行逻辑,配置文件负责存储项目的配置信息。

如果将配置信息耦合到程序中,那么一旦配置信息发生变动,就需要对代码进行同步修改,以及测试。将配置信息与程序进行分离,降低了配置信息与代码的耦合度,便于项目的维护。

15.5.5 知识要点

(1) 所谓的json文件,特指json格式的文件。
(2) 在Python内置的json模块中,分别提供了dumps方法以及loads方法。前者将Python中的数据对象序列化为json格式,后者将json格式的文本反序列化为Python中的数据对象。

15.5.6 高薪就业班

(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:


欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录