找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2797|回复: 0

[代码与实例] 修改json指定节点

1

主题

1

帖子

1

积分

贫民

积分
1
ccheng8 发表于 2018-10-23 11:33:05 | 显示全部楼层 |阅读模式
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))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表