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