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": "刪除"
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM