python介面自動化之-- json參數替換

來源:互聯網
上載者:User

標籤:object   []   遍曆   key值   請求   [1]   amount   self   adl   

#! /usr/bin/python
# coding:utf-8
# class changeData(object):

class getValues(object):
def __init__(self):
pass

#通過key擷取嵌套字典value
def get_target_value(self,key, dic, tmp_list):
"""
:param key: 目標key值
:param dic: JSON資料
:param tmp_list: 用於儲存擷取的資料
:return: list
"""
if not isinstance(dic, dict) or not isinstance(tmp_list, list): # 對傳入資料進行格式校正
return ‘argv[1] not an dict or argv[-1] not an list ‘

if key in dic.keys():
tmp_list.append(dic[key]) # 傳入資料存在則存入tmp_list
else:
for value in dic.values(): # 傳入資料不符合則對其value值進行遍曆
if isinstance(value, dict):
print(‘看這裡‘,value)
self.get_target_value(key, value, tmp_list) # 傳入資料的value值是字典,則直接調用自身
elif isinstance(value, (list, tuple)):
self.get_value(key, value, tmp_list) # 傳入資料的value值是列表或者元組,則調用_get_value
return tmp_list

#通過key擷取嵌套字典value子方法
def get_value(self,key, val, tmp_list):
for val_ in val:
if isinstance(val_, dict):
self.get_target_value(key, val_, tmp_list) # 傳入資料的value值是字典,則調用get_target_value
elif isinstance(val_, (list, tuple)):
self.get_value(key, val_, tmp_list) # 傳入資料的value值是列表或者元組,則調用自身


#替換請求參數
"""
key:需要替換字典的key
dic:目標字典
changeData:替換值
"""
def replace_target_Value(self,key,dic,changeData):
if not isinstance(dic, dict): # 對傳入資料進行格式校正
return ‘argv[1] not an dict or argv[-1] not an list ‘
if key in dic.keys():
dic[key]=changeData # 修改字典
else:
for value in dic.values(): # 傳入資料不符合則對其value值進行遍曆
if isinstance(value, dict):
self.replace_target_Value(key, value, changeData) # 傳入資料的value值是字典,則直接調用自身,將value作為字典傳進來
value[key]=changeData #替換key的value
elif isinstance(value, (list, tuple)):
self.replace_target(key, value, changeData) # 傳入資料的value值是列表或者元組,則調用_get_value
return dic

#替換參數子方法
#資料類型判斷,遍曆後分別調用不用的方法
def replace_target(self,key, val, changeData):
for val_ in val:
if isinstance(val_, dict):
self.replace_target_Value(key, val_, changeData) # 傳入資料的value值是字典,則調用replace_target_Value
elif isinstance(val_, (list, tuple)):
self.replace_target(key, val_, changeData) # 傳入資料的value值是列表或者元組,則調用自身

if __name__ == ‘__main__‘:
tmp_list=[]
tmp_dic={
‘respCode‘: ‘0000‘,
‘message‘: ‘success‘,
‘data‘: {
‘totalCount‘: 1,
‘totalPage‘: 1,
‘items‘: [{
‘publishTime‘: 12345678910,
‘totalAmount‘: 0,
‘projectId‘: ‘789‘
}]
}
}
test_dic={
‘respCode‘: ‘0000‘,
‘message‘: ‘success‘,
‘data‘: {
‘totalCount‘: 1,
‘totalPage‘: 1,
‘items‘: [{
‘publishTime‘: 1521083405000,
‘totalAmount‘: 0,
‘fullSuccessTime‘: 1521083405000,
‘submitTime‘: 1521082143000,
‘deadlineUnit‘: 1,
‘createTime‘: 1521082143000,
‘managementFee‘: ‘0.00‘,
‘penaltyFee‘: ‘0.00‘,
‘contractAmount‘: ‘3000.00‘,
‘days‘: 0,
‘borrowType‘: 1,
‘projectId‘: ‘57185181850095616‘
}]
}
}
print(type(test_dic))
#a=getValues().get_target_value(key=‘projectId‘,dic=test_dic,tmp_list=tmp_list)
print(‘替換前:‘,tmp_dic)
b=getValues().replace_target_Value(key=‘projectId‘,dic=tmp_dic,changeData=‘57185181850095616‘)

print(‘替換後:‘,b)

python介面自動化之-- json參數替換

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.