2.Python处理json数据

一、python对象和json格式的对应关系

jsonPython
{}对象(object)字典(dict)
[]数组(array)列表(list)
字符串字符串(string)字符串(str)
整数整数(int)整数(int)
实数实数(float)实数(float)
布尔值trueTrue
布尔值falseFalse
nullNone

二、json反序列化为Python

2.1 json.loads()操作字符串

使用json.loads()方法将json字符串转化为python对象

注:反序列化时原对象中的key和value需使用双引号包裹,否则报错

import json
case='''{
    "id":1,
    "title":"注册成功-不带昵称和类型",
    "method":"post",
    "url":"http://test.lemonban.com/futureloan/mvc/api/member/register",
    "request_data":{"mobilephone":"13000450100","pwd":"12345678"},
    "expect_data":{"code":"10001","msg":"注册成功"}
}'''
print(type(case),case)
case1=json.loads(case)
print(type(case1),case1)

2.2json.load()操作文件

使用json.load()方法以读方式打开json文件,将文件中的json数据反序列化为Python对象

import json
with open('test.json','r',encoding='utf-8') as f:
    load_data=json.load(f)
    print(load_data,type(load_data))

三、Python序列化为json

3.1json.dumps()转为json字符串

将一个python对象序列化为一个json格式的字符串

import json
data = {
    "id":1,
    "title":"注册成功-不带昵称和类型",
    "method":"post",
    "url":"http://test.lemonban.com/futureloan/mvc/api/member/register",
    "request_data":{"mobilephone":"13000450100","pwd":"12345678"},
    "expect_data":{"code":"10001","msg":"注册成功"}
}
json_str = json.dumps(data)
print(json_str,type(json_str))

3.2json.dump()转为json文件

将python对象序列化为josn数据后写入以w模块打开的文件

import json
data = {
    "id":1,
    "title":"注册成功-不带昵称和类型",
    "method":"post",
    "url":"http://test.lemonban.com/futureloan/mvc/api/member/register",
    "request_data":{"mobilephone":"13000450100","pwd":"12345678"},
    "expect_data":{"code":"10001","msg":"注册成功"}
}
with open('test.json','w',encoding='utf-8') as f:
    json.dump(data,f)

四、jsonpath提取数据

4.1安装模块

pip install jsonpath

4.2通过字典键值对的方式获取token

import requests
url='http://{{ip}}/api/system/authUser/login'
data={
    "username": "YWRtaW4=",
    "password": "QWRtaW5AMTIz"
}
re=requests.post(url=url,json=data)
res=re.json()
print(res)
#{'msg': 'success', 'code': 200, 'data': {'tokenName': 'token', 'tokenValue': 'Nh_zkfm1CeAwxWEJ3_rfyNNXJzU3uf4BJq__', 'user': {'id': 2, 'username': 'admin', 'password': '******', 'name': '超级管理员', 'sex': '男'}}}
​
​
token=res['data']['tokenValue']
print(token)

4.3通过jsonpath提取

from jsonpath import jsonpath
import requests
url='http://192.168.1.185:30201/api/system/authUser/login'
data={
    "username": "YWRtaW4=",
    "password": "QWRtaW5AMTIz"
}
re=requests.post(url=url,json=data)
res=re.json()
print(res)
#{'msg': 'success', 'code': 200, 'data': {'tokenName': 'token', 'tokenValue': 'Nh_zkfm1CeAwxWEJ3_rfyNNXJzU3uf4BJq__', 'user': {'id': 2, 'username': 'admin', 'password': '******', 'name': '超级管理员', 'sex': '男'}}}
​
​
token=jsonpath(res,'$.data.tokenValue') #$.data.tokenValue与$..tokenValue均可
print(token,type(token))

jsonpath的语法:

jsonpath描述
$根节点
@当前元素
. 或[]下一个节点
...不考虑位置,符合条件的元素
*匹配所有元素节点
[]数组下标,根据内容选值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值