Python中的json内置库详解
作者:史上最强踩坑王
一、json作用
json 是用于存储和交换数据的语法,是一种轻量级的数据交换式使用场景,主要用于以下场景
- 接口数据的传输
- 序列化
- 配置文件(不是很适合,因为不能写注释,代码可读性较差一点)
二、json组成的结构
- 键值对形式
- 数组形式
- python 对象 与 json 数据类型对应,如下图
三、json库
- 可以从字符串或文件中解析json
- 该库解析json后将其转为python字典或者列表
- 常用的方法有以下,如下图
- 将 python 对象转化为 json 字符串的demo,使用 dumps 方法
import json """ 将 python 对象转为 json 字符串 """ # 定义 python 字典格式的对象,在python中一切皆为对象 data ={ 'a':1, 'b':['1', 2], 'c':True, 'd':False, 'e':None } # 将 python 对象转为 json 字符串 python_data = json.dumps(data) # 打印变量 python_data print(python_data)
输出的结果如下,双引号、true、false 、null 这些都是 json 的数据格式
{"a": 1, "b": ["1", 2], "c": true, "d": false, "e": null}
- 将 json 字符串转化为 python 对象,使用的是 loads 方法,代码如下
""" 将 json字符串的格式转化成 python 对象 """ # 定义一个 json 字符串 json_data = '{"a": 1, "b": ["1", 2], "c": true, "d": false, "e": null}' # 将 json 字符串转化为 python 对象 python_data = json.loads(json_data) # 打印变量 python_data print(python_data) # 打印变量的数据类型 print(type(python_data))
输出的结果如下,输出为 python 的字典数据格式,False、True、None 这些都是 python 的数据格式
{'a': 1, 'b': ['1', 2], 'c': True, 'd': False, 'e': None} <class 'dict'>
- 将 python 对象转化为 json 格式数据并写入到 json 文件当中,使用的是 dump 方法,代码如下
""" 将 python 对象转化为 json 格式并写入到一个 json 文件当中 """ data ={ 'a':1, 'b':['1', 2], 'c':True, 'd':False, 'e':None } # 将 python 对象转化为 json 格式并写入到一个 json 文件当中 with open('test.json',mode='w') as f: json.dump(data,f)
生成的json文件如下图,是一个标准的 json 文件
- 将 json 文件读取出来,并转换为 python 对象,使用的是 load 方法,代码如下
# 读取 test.json 文件并赋值给变量 data with open('test.json',mode='r') as f: data = json.load(f) # 打印变量 data print(data) # 打印 data 数据类型 print(type(data))
输出的结果如下图,已经成功转换为 python 的字典数据格式了
由上面我们可以总结:
方法(dumps 、loads)和 方法(dump、load)之间区别,除了字面上一个加 s 一个没有加以外,我们需要写入到文件的时候就使用不加 s 的方法,例如:dump、load,如果只是想将 python 的数据格式 和 json 字符串之间进行数据转换,我们就需要使用加 s 的方法,例如:dumps、loads
四、dumps 常用参数
- indent:根据数据格式缩进显示,默认为None,没有缩进
- ensure_ascii:对中文使用ASCII编码,默认为True,如果设置为True的话,如果想要在 json 格式中展示为中文的话,最好将这个设置为 False
代码如下
""" 使用 json 里面的 dumps 方法,并添加 ensure_ascii,indent 这两个参数 """ # 定义一个 python 对象 data ={ 'a':1, 'b':'从此以后一别两宽', 'c':True, 'd':False, 'e':None } # 将 python 对象转化为 json 字符串 json_data = json.dumps(data,ensure_ascii=False,indent=4) # 打印变量 json_data print(json_data)
输出的结果如下,能够将中文成功展示出来,并进行了缩进,更加美观
如果将ensure_ascii 参数设定为 True ,结果如下:并不能成功展示中文
当然除了上面常用参数以外,还有很多,各位小伙伴可以下来自己练习
到此这篇关于Python中的json内置库详解的文章就介绍到这了,更多相关Python的json库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!