python---内置库json
1. 前言
json:用于使用Json序列化和反序列化对象。
json是用于存储和交换数据的语法,是一种轻量级的数据交换格式。
使用场景:
1. 接口数据传输 (主要是服务器和客户端之间的数据传输,包含请求体响应体等)
2. 序列化 (很方便不同语言之间去进行数据的交换)
3. 配置文件 (json可以做配置文件的数据格式,后面还有一种更适合数据文件配置)
测试过程中很多用到json格式,对json的处理。
在工作中,还有json在线解析器(百度)其实就是可以把JSON内容或JSON文件进行格式化解析,按JSON层级展现。
2. json结构
json基于两种基本的结构。
键值对:key 和 value 的格式。对应python当中的一个字典。
数组形式:对应python种的一个列表。中括号括起来的形式。每两个对象之间要用逗号进行分割。
3. python与Json数据类型对应
python与json里面的具体的数据类型不一样的,可以参考对照表。
如果直接拿python的字典去当Json用,或者直接把Json数据拿过来当python当字典或者当列表用其实是会出问题的,不能直接拿来用,它是需要转换之后才能被正常去使用的。
4. json库
居然知道要转换,那么怎么来转换?
Json要和python转换就需要用到内置的json库。json库它可以从我们的字符串或者文件当中去把我们的json解析出来,解析出来之后可以和python类型去进行对应的转换。
5. 常用方法
最常用的为下面种方法。`(*>﹏<*)′
注意区分加s和不加s的区别!!!!!!!看源码知加了s后多了个写入文件的操作fp;
加s转成字符串,跟字符串之间的一个相互转化;不加s是跟文件之间的相互转化。
第一种方法:dumps(),python转成json对象
python对象转json字符串。
import json
# 定义 python 结构, 是一个字典
data = {
'a':1,
'b':["2",'3'],
'c':True,
'd':False,
'e':None
}
# 将我们的 python 字典对象编码为 Json 字符串
json_data = json.dumps(data) # 调用dump方法,传入python对象,完成转换
print(json_data) # 打印出来结果为:{"a": 1, "b": ["2", "3"], "c": true, "d": false, "e": null}
返回
转换之后看看区别:
1. python中是使用的是单引号,json中标准是使用双引号;
2. 布尔值,python中布尔值是大写的,json中是小写的。
3. 空值,python中是None,json中是null。
第二种方法:loads(),json转成python对象
json字符串转换为python对象
import json # 定义 JSON 字符串 json_data = """{"a": 1, "b": ["2", "3"], "c": true, "d": false, "e": null}""" # 将 JSON 字符串转化为 Python 对象 python_data = json.loads(json_data) # 调用loads方法 print(python_data) # 打印 print(type(python_data)) # 类型也打印一下
打印之后:
第三种方法:dump(),写入文件
第三第四种方法,其实是处理相关的Json文件的。
python 对象转化为 json 格式的数据并且写入 json 文件
import json
data = {
'a':1,
'b':["2",'3'],
'c':True,
'd':False,
'e':None
}
# 把python 对象转化为 json 格式的数据并且写入 json 文件
# 用with open方法。 当前目录下创建一个叫 data.json 文件,并对他进行写入
with open('data.json','w') as f:
json.dump(data,f) # 第一个传data,第二个传打开的这个f
# 传入之后可以把 data 转化为 json 格式数据,并且写入到 data.json 这个文件里面。
执行之后,打开新增的文件,可以看到文件成功新增写入:
第四种方法:load(),读取文件
接上面那个文件,
把上面 data.json 文件中的数据读取出来,并且转化为 python 数据对象。
import json # 读取 json 文件,并且转化为 python 对象 with open('data.json','r') as f: data = json.load(f) # 调用laod方法 print(data) # 打印查看 print(type(data))
返回:
上面即可完成,把我们data.json这个文件的这个数据读取出来,并且转化为python对象。
tips:
上面4种方法是最基本的使用,这些方法还有很多有用的参数。可以扩展使用
PyCharm编辑器 在该类或方法上按住“ctr+鼠标左键”可以快速查看源代码。
6. 扩展
扩展主要是一参数的使用,先看代码:
import json
data = {
'a':1,
'b':'今天星期一',
'c':True,
'd':False,
'e':None
}
json_data = json.dumps(data,ensure_ascii=False,indent=4)
print(json_data)
返回如下:
这里存在中文,如果是Ture会显示字母方式!!!
这里即转换成功,下面看看源码。......下面......q(≧▽≦q)😊😊😊😊.................↓
举个栗子,dumps方法,打开该方法源码,
看看这个源码,里面有很多参数可以使用,最常用为这两个