你想要这样的东西吗?
#!python3
json_data = [
{ 'key1':
{ 'key2':
[
{'key3': 1 }
]
}
}
]
def get_deep(*keys):
try:
doa = json_data
for key in keys:
doa = doa[key]
return doa
except KeyError:
return None
except IndexError:
return None
tests = (
# Want, Keys...
(1, 0, 'key1', 'key2', 0, 'key3'),
(None, 1, 'key1', 'key2', 0, 'key3'),
(None, 0, 'key11', 'key2', 0, 'key3'),
(None, 0, 'key1', 'key22', 0, 'key3'),
(None, 0, 'key1', 'key2', 1, 'key3'),
(None, 0, 'key1', 'key2', 0, 'key33'),
)
for i,test in enumerate(tests):
expected,*keys = test
got = get_deep(*keys)
if got is expected:
print(i, "OK")
else:
print(i, "FAIL", got, "is not", expected)