import base64
class getValues(object):
def __int__(self):
pass
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值是列表或者元组,则调用自身
def imgbase(self,file):
with open(file, 'rb') as f:
imgb64code = base64.b64encode(f.read())
imgb64code=str(imgb64code, 'utf-8')
return imgb64code
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={
"systemKey": "90DD2C2CB3C94E4698ED5A54EE6CAD4F",
"honorType": "KAOLA_FACE_VALIDATE",
"params": {
"idCardName":"***","idCardCode":"5113211996012*****","validPhoto":"图片Base64字符串"
},
"idCertNo": "23022119880*****",
"certType": "IDENTITY_CARD",
"isRequestNew": True
}
print(type(test_dic))
#a=getValues().get_target_value(key='projectId',dic=test_dic,tmp_list=tmp_list)
print('替换前:',test_dic)
changeData=getValues().imgbase('/Users/../Desktop/1.jpeg')
print(changeData)
b=getValues().replace_target_Value(key='validPhoto',dic=test_dic,changeData=changeData)
print('替换后:',b)