|
def changeJson(targetJson,jsonRE,replaceOnly=True):
"""
:param targetJson:需要进行操作的json
:param jsonRE: {k:v,}K需要操作的节点 |||分割层级
:param replaceOnly:默认True 即只替换源节点 不生成新节点
:return:处理后的json
"""
replaceOnly=False
jsonRE={"record|||queryStrings|||0|||id":"222","environment":"333","sss":"www"}
targetJson={"environment":"kkkkk","record":"222"}
if type(jsonRE) !=type({"a":"b"}):
print("替换规则传参错误,未修改json")
return targetJson
for k,v in jsonRE.items():
k_items=k.split("|||")
len_k_items=len(k_items)
for i in range(len_k_items):
try:
k_items=int(k_items)
except:
pass
# print(k)
if len_k_items == 1:
if replaceOnly :
try:
temp = targetJson[k_items[0]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]] = v
if len_k_items == 2:
if replaceOnly :
try:
temp = targetJson[k_items[0]][k_items[1]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]] = v
if len_k_items == 3:
if replaceOnly:
try:
temp = targetJson[k_items[0]][k_items[1]][k_items[2]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]][k_items[2]] = v
if len_k_items == 4:
if replaceOnly:
try:
temp = targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]] = v
if len_k_items == 5:
if replaceOnly:
try:
temp = targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]] = v
if len_k_items == 6:
if replaceOnly:
try:
temp = targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]][k_items[5]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]][k_items[5]] = v
if len_k_items == 7:
if replaceOnly:
try:
temp = targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]][k_items[5]][k_items[6]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]][k_items[5]][k_items[6]] = v
if len_k_items == 8:
if replaceOnly:
try:
temp = targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]][k_items[5]][k_items[6]][k_items[7]]
except :
print("给定的键{k}不存在,当前设定为仅替换,故未新增{k}键".format(k=k))
continue
targetJson[k_items[0]][k_items[1]][k_items[2]][k_items[3]][k_items[4]][k_items[5]][k_items[6]][k_items[7]]= v
if len_k_items > 8:
print("层级太多了,增加下底层脚本吧")
return targetJson
print(changeJson(1,1))
|
|