本文为在霍格沃兹测试开发学社的学习经历分享,希望有志同道合的小伙伴可以一起交流技术,一起进步~
Json是轻量级的数据交换格式,是前端和后端交互的时候,统一的一种数据交换格式
友好,易于读写,对机器友好,易于解析和生成
由列表和字典组成
使用场景:
将对象生成为字符串,存入文件、数据库,在网络传输等
解析来自文件、数据库、网络传输的字符串成python对象
跨语言的数据交换,如python和c/c++/java/javascripts的数据交换
JSON有两种表示结构,对象和数组。
常用方法:
json.dumps(python_obj) 把数据类型转换成字符串
json.loads() 把字符串换成json
json.dump() 把数据类型转换成字符串并存储在文件中
json.load(file_stream) 把文件打开,把里面的字符转换成数据类型
import json
data = {
'name':'jerry',
'age':'26',
'gender':'female'
}
print(type(data))
data1 = json.dumps(data) #转化成字符串格式
print(data1)
print(type(data1))
data2 = json.loads(data1) #把字符串格式转化成json
print(type(data2))
python | json | 说明 |
---|---|---|
dict | object | 字典 |
list,tuple | array | 序列 |
str | string | 字符串 |
int,float | number | 数字类型 |
True | true | 布尔值true |
False | false | 布尔值false |
None | null | 空值 |
data = {
'a':1,
'b':[12,34,5],
'c':True,
'd':"霍格"
}
#indent控制缩进,ensure_ascii控制编码,如果有中文需要设置成False
json_data = json.dumps(data,ensure_ascii=False,indent=4)
print(json_data)
dict = {"age": "12"}
json_str = json.dumps(dict)
json_str = '{"age": "12"}'
dict = json.loads(json_str)
age = dict['age']
json_str = "{'age': '12'}"
file = open('1.json', 'w', encoding='utf-8')
json.dump(json_str, file)
file = open('1.json', 'r', encoding='utf-8')
info = json.load(file)
基本语法:
#注释
#1-字典 键: 值
username: xiaoming #冒号后面是空格
password: 123456
info: 配置 #中文不建议使用,有可能会乱码
#字典嵌套
NAME_PSW:
name:xiaoming
password:123456
#2-列表格式
-10
-20
-30
# 列表嵌套
-10
-20
-
-100
-200
#3-列表嵌套字典
-10
-20
-
name: tom
password: 123456
#4 字典嵌套列表
name: TOM
info:
-10
-20
-30
#5 引号 如果是有英文字母或者中文的,不加引号也是字符串
info: "HELLO world" #引号可以不加
#如果有转义字符\n等,不加引号就原样输出,如果显示特殊字符效果,就加双引号
info: "HELLO\nworld"
#6 引用 一个数据可以使用很多地方,使用变量
# &变量名 定义变量
# *变量名 引用变量
name: &a tom
name1: *a
#7 能不能多个YAML 写在一起,有字典也有列表 ,加分隔符 ---
-10
-20
-30
---
name: sq
#8 yamL文件可以嵌套yaml
DATA: conf.yaml
import yaml
data = {
"client":{"default":"utf-8"},
"mysql":{"user":"root","password":123},
"custom":{
"user1":{"user":"张三","pwd":666},
"user2":{"user":"李四","pwd":999},
}
}
#用dump方法将python对象转成yaml格式的文件
with open('./my.yaml','w',encoding='utf-8') as f:
# 如果写入的对象含有中文,需要设置一个参数,allow_unicode为True,这样就可以正常显示中文了
yaml.dump(data,f,allow_unicode=True)
#读取yaml文件中的内容转化成python对象
import yaml
with open('./my.yaml','r',encoding='utf-8') as f:
#解析流中的第一个YAML文档并生成相应的Python对象。
data = yaml.safe_load(f)
print(data)
print(type(data))
推荐阅读文章链接:接口测试经典面试题:Session、cookie、token有什么区别?_霍格沃兹测试开发学社的博客-CSDN博客