MeterSphere使用Python后置脚本获取Json响应数据作为下一个接口参数

MeterSphere使用Python后置脚本获取Json响应数据作为下一个接口参数

前提:

因删除应用需要用到应用id,但列表中的应用很多,需要查到对应的应用名称获得对应的应用id

解决方法:通过Python获取json数据,并比对应用名称获得应用id

 

该查询应用请求接口返回的响应体:

{

"result": true,
"message": null,
"data": [
{
"appTypeId": "1",
"appTypeName": "智慧教学",
"apps": [
{
"appId": "03AAED47086C2D3E8E14E97069356FBB",
"appName": "移动门户",
"appOldName": null,
"skipUrl": "http://10.4.3.8:12207?token=27509A885657461E893FD026DD0048F8&orgcode=8651010000002",
"url": "http://10.4.3.8:12207?token={token}&orgcode={orgcode}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.56",
"version": "1.03",
"model": "3",
"ifDelete": "0",
"imgUrl": "icon/2/JF_ISMPA.png",
"remark": "",
"ifEnable": "1"
},

{
"appId": "D74728051B02F597366A78AFAC144CD8",
"appName": "课堂生态",
"appOldName": null,
"skipUrl": "http://10.4.3.8:12202/build/index.html?token=27509A885657461E893FD026DD0048F8&orgcode=8651010000002",
"url": "http://10.4.3.8:12202/build/index.html?token={token}&orgcode={orgcode}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.7",
"version": "2.31",
"model": "3",
"ifDelete": "0",
"imgUrl": "icon/2/JF_ISCEM2.31.png",
"remark": "",
"ifEnable": "1"
},
{
"appId": "F0279637C91520BB82941C8E37930982",
"appName": "基础平台",
"appOldName": null,
"skipUrl": "http://10.4.3.8:12201/index.html#/home/loading?token=27509A885657461E893FD026DD0048F8&orgcode=8651010000002",
"url": "http://10.4.3.8:12201/index.html#/home/loading?token={token}&orgcode={orgcode}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.72",
"version": "2.0",
"model": "3",
"ifDelete": "0",
"imgUrl": "icon/2/JF_ISBMP2.0.png",
"remark": "",
"ifEnable": "1"
}
],
"appNx": [],
"enable": "1"
},
{
"appTypeId": "2",
"appTypeName": "智慧管理",
"apps": [
{
"appId": "743E113BFCD84CAEB9A46405FB4DB1F6",
"appName": "基础test",
"appOldName": null,
"skipUrl": "http://10.10.0.59:1222/?orgCode=8651010000002&token=27509A885657461E893FD026DD0048F8",
"url": "http://10.10.0.59:1222/?orgCode={orgcode}&token={token}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.75",
"version": "3.1",
"model": "2",
"ifDelete": "1",
"imgUrl": "icon/4/基础test2021-7-13-102419.jpg",
"remark": "",
"ifEnable": "1"
}
],
"appNx": [],
"enable": "1"
},
{
"appTypeId": "3",
"appTypeName": "智慧考试",
"apps": [],
"appNx": [],
"enable": "1"
},
{
"appTypeId": "4",
"appTypeName": "其他",
"apps": [],
"appNx": [],
"enable": "1"
}
],
"code": null,
"total": 0,
"timeStamp": null
}


后置脚本获取json

 

操作步骤:

import json
def list_get_index(l_list, key, value):
"""list元素为dict,根据dict中某个元素值返回list索引"""
  index = 0
  for dic in l_list:
  if dic[key] == value:
    return index
  index += 1



res = prev.getResponseDataAsString() #res为响应结果,类型为unicode
dic_res = json.loads(res) #将unicode转为dict

u_list_apps = dic_res['data'][0]['apps'] #格式为list,其中数据为带u的unicode格式
print(u_list_apps)
print(type(u_list_apps))

deunicode_apps = str(u_list_apps).decode('utf-8').replace('\'','\"').decode('unicode-escape').replace('u\"','\"') #去掉u之后的unicode格式\
print(deunicode_apps) #不带u的uicode格式
print(type(deunicode_apps))

list_apps = eval(deunicode_apps)
print(list_apps)
print(type(list_apps))

 

 

index = list_get_index(list_apps, 'appName', "\xe6\xb5\x8b\xe8\xaf\x95\xe6\x96\xb0\xe5\xa2\x9e\xe5\xba\x94\xe7\x94\xa8") # 获取data中目标字典的索引
appId = list_apps[index]['appId']
print(appId)
vars.put("appId", appId) #设置变量

 

 

 

 

 

 

控制台输出结果:

 

 

获得的应用id:

appId:0530E23590F742E2A845637D8E9B192F

在删除应用接口中的使用:

{
"version": "2.0",
"data": {
"AppID": "${appId}"
},
"token": "${userToken}",
"orgcode": "8651010000002",
"Operation": {
"UserID": "admin",
"UserName": "admin",
"UserType": "0",
"OpType": "删除",
"OpRemark": "删除"
}
}

 

posted @ 2021-07-14 16:41  风吹稻香  阅读(5047)  评论(3编辑  收藏  举报