Put random numbers recursively

Python json recursively put random numbers


jsstr={
    "l":[2],
    "name":"",
    "dic":{
        "a":""
    },
    "list":[
        {
            "b":"c"
        }
    ],
    "in":3,
    "ls":[
        [
            {
                "n":""
            }
        ]
    ]
}

import random
import string
def randomjson(src):
    if isinstance(src, dict):
        for key in src.keys():
            if isinstance(src[key], dict):
                randomjson(src[key]) 
            elif isinstance(src[key], list):
                for i in src[key]:
                    randomjson(i)
            elif isinstance(src[key], str):
                src[key] = ''.join(random.sample(string.ascii_letters + string.digits, 8))
            elif isinstance(src[key], int):
                src[key] = random.randint(1,50)
            else:
                return
    elif isinstance(src, list):
        for i in src:
            randomjson(i)



randomjson(jsstr)
print(jsstr)

#json比较  parent包含child判断
jsstr={
    "l":[2,22],
    "name":"",
    "dic":{
        "a":""
    },
    "list":[
        {
            "b":"c"
        }
    ],
    "in":3,
    "ls":[
        [
            {
                "n":"1"
            },
                       
            {
                "n":"2"
            }
        ]
    ]
}


jschild={
    "l":[2,22],
    "name":"",
    "dic":{
        "a":""
    },
    "list":[
        {
            "b":"c"
        }
    ],
    "ls":[
        [
            {
                "n":"2"
            }
        ]
    ]
}
def comparejson(parent, child):
    if type(parent) != type(child):
        return False
    if isinstance(child, dict):
        for key in child.keys():
            if key not in parent:
                return False
            find = comparejson(parent[key], child[key]) 
            if find == False:
                return False
        return True
    elif isinstance(child, list):
        for i in child:
            find  = False
            for p in parent:
                find = comparejson(p, i)
                if find == True:
                    break
            if find == False:
                return False
    else:
        return parent == child

150 original articles published · 79 praised · 630,000 views +

Guess you like

Origin blog.csdn.net/liu0808/article/details/105073801