网站响应时间方案,wordpress 上传目录权限设置,装修公司加盟品牌排行榜,吉林市做网站哪家好目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言
JSON(JavaScript … 目录导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它可以让人们很容易的进行阅读和编写同时也方便了机器进行解析和生成适用于进行数据交互的场景比如网站前台与后台之间的数据交互。
简单说就是javascript中的对象和数组通过这两种结构可以表示各种复杂的结构。
对象对象在js中是花括号{}括起来的内容数据结构为{key:value,key:value,…}这样的键值对结构。
在面向对象的语言中key为对象的属性value为对应的属性值所以很容易理解取值方法为对象.key来获取属性值这个属性值的类型可以是数字、字符串、数组、对象这几种。
数组数组在js中是中括号[]括起来的内容数据结构为[“Python”, “javascript”, “C”,…]类似python中的列表取值方式和所有语言中一样使用索引获取字段值的类型可以是数字、字符串、数组、对象几种。
1、JSON模块
现在99%的接口返回的数据都是json格式在python中有专门处理json格式的模块——json模块在python2.6之后的版本都自带了这一个模块直接导入import json即可。
json模块提供了四个功能dumps、loads、dump、load用于字符串和python数据类型之间进行转换。
json.dumps()将 Python 对象解码转换成 JSON 字符串 json.loads()把JSON 格式字符串解码转换成Python 对象 json.dump()将Python内置类型序列化为JSON 对象后写入文件 json.load()读取文件中JSON 形式的字符串元素转化成Python 类型
其中类文件对象的理解其实就是具有read()或者write()方法的对象比如f open(“test.txt”,“r”) f就是类文件对象。
下面对dumps和loads分别举例说明
import jsondata [{a: 1, b: 2, c: 3}]
data2 json.dumps(data) # 将python对象转换成json字符串
print(data2)
print(type(data2))
print(-------还可以使用参数格式化输出json格式--------)
print(json.dumps(data, sort_keysTrue, indent4, separators(,, : )))jsonData {a:1,b:2,c:3,d:4,e:5}
text json.loads(jsonData)
print(---------json转python---------)
print(text)
print(type(jsonData))# 返回结果如下
# C:\software\python\python.exe D:/learn/test.py
# [{a: 1, b: 2, c: 3}]
# class str
# -------还可以使用参数格式化输出json格式--------
# [
# {
# a: 1,
# b: 2,
# c: 3
# }
# ]
# ---------json转python---------
# {a: 1, b: 2, c: 3, d: 4, e: 5}
# class str
#
# Process finished with exit code 0dumps解码的过程是把python对象转换成json对象的一个过程常用的两个函数是dumps和dump函数。
两个函数的唯一区别就是dump把python对象转换成json对象生成一个fp的文件流而dumps则是生成了一个字符串。
解码中常用的参数
Skipkeys默认值是False如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None)设置为False时就会报TypeError的错误。此时设置成True则会跳过这类key
ensure_ascii默认值True如果dict内含有non-ASCII的字符则会类似\uXXXX的显示数据设置成False后就能正常显示
indent应该是一个非负的整型如果是0或者为空则一行显示数据否则会换行且按照indent的数量显示前面的空白这样打印出来的json数据也叫pretty-printed json
separators分隔符实际上是(item_separator, dict_separator)的一个元组默认的就是(‘,’,这表示dictionary内keys之间用“,”隔开而KEY和value之间用“”隔开
encoding默认是UTF-8设置json数据的编码方式 sort_keys将数据根据keys的值进行排序。
python 类型向 json 类型的转化对照表如下
PythonJSONdictobject对象list, tuplearray数组str, unicodestringint, long, floatnumberTruetrueFalsefalseNonenull
反之json 类型转换到 python 的类型对照表
JSONPythonobject对象dictarray数组liststringunicodenumber (int)int, longnumber (real)floattrueTruefalseFalsenullNone
特别注意 转换的时候python的None会变成nullTrue和False转换后首字母都会变成小写他们的json格式在python中是无法被识别的会被当成变量处理。
2、JsonPath库
JsonPath是一种信息抽取类库是从JSON文档中抽取指定信息的工具提供多种语言实现版本包括JavaScript、Python、PHP和Java。
JsonPath对于JSON来说就相当于XPATH对于XML。JsonPath结构清晰可读性高复杂度低非常容易匹配下表中对应了XPath的用法。
XpathJSONPath描述/$根节点.现行节点/. or []取子节点…n/a取父节点Jsonpath未支持//…不管位置选择所有符合条件的节点**匹配所有元素节点n/a根据属性访问JsonPath不支持[][]迭代器可以在里边做简单的迭代操作如数组下标根据内容选值等l[,]支持迭代器中做多选[]?()支持过滤操作n/a()支持表达式计算()n/a分组JsonPath不支持
pip安装pip install jsonpath 使用方法jsonpath.jsonpath结果会以列表形式返回。
如下请求接口返回数据提取例子 参数1数据对象 参数2jsonpath表达式
import requests
import jsonpathlogin_url http://localhost:8080/member/login
login_data {mobile_phone: 15867554893,pwd: 123456qwe,
}
header { Content-Type: application/json}
# 发送登录的请求
response requests.post(urllogin_url, jsonlogin_data, headersheader)
# 获取返回的json数据
json_data response.json()member_id jsonpath.jsonpath(json_data, $..id)[0]
type_token jsonpath.jsonpath(json_data, $..token_type)[0]
token jsonpath.jsonpath(json_data, $..token)[0]
print(json_data)
print(会员id{}.format(member_id))
print(token的类型{}.format(type_token))
print(token{}.format(token))运行返回的数据如下
C:\software\python\python.exe D:/learn/test.py
{code: 0, msg: OK, data: {id: 59514, money: 34000.0, mobile_phone: 15612345678, reg_name: miki测试, reg_time: 2020-11-16 22:18:59.0, type: 0, token_info: {token_type: Bearer, expires_in: 2020-12-10 00:30:01, token: eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjU5NTE0LCJleHAiOjE2MDc1MzE0MDF9.GAoCY5RZ_FWUIRMNXdURdH5y7zKuETo1qsq9Z9No9AaWvo2QGLR9maWxEY31Ddy6a7QmpT56xKg7N3YwGLTbOQ}}}
会员id59514
token的类型Bearer
tokeneyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjU5NTE0LCJleHAiOjE2MDc1MzE0MDF9.GAoCY5RZ_FWUIRMNXdURdH5y7zKuETo1qsq9Z9No9AaWvo2QGLR9maWxEY31Ddy6a7QmpT56xKg7N3YwGLTbOQ登录接口返回的json数据格式化后的层级显示如下 下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
心怀梦想跨越极限奋斗的脚步永不停歇磨砺意志超越自我拒绝平庸成就卓越人生。相信坚持扬起希望的风帆航向辉煌绽放无限可能。
积极拥抱挑战勇往直前追逐梦想的脚步不停歇努力奋斗不畏艰难每一次努力都是成就的契机。相信自己燃烧希望扬帆起航创造辉煌人生。
每一次努力都是种子潜藏着成功的可能每一次奋斗都是征途铺就通向辉煌的路。坚持不懈决不放弃用汗水浇灌梦想的花朵绽放人生的耀眼光芒。