擅长:python、mysql、java
<p>假设您需要完整的字典路径,直到名为<strong>id</strong>的键具有特定值,下面是一个递归解决方案,它迭代整个dict。请记住:</p>
<ul>
<li>代码根本没有优化</li>
<li>对于巨大的json对象,它可能会生成<em>StackOverflow</em>:)</li>
<li>它将在第一次发现值时停止(理论上,如果json语义正确,则不应超过1)</li>
</ul>
<p>代码:</p>
<pre><code>import json
from types import DictType
SEARCH_KEY_NAME = "id"
FOUND_FLAG = ()
CRONO_FILE = "a.jsn"
def decode_crono(crono_file):
with open(crono_file) as json_file:
return json.load(json_file)
def traverse_dict(dict_obj, value):
for key in dict_obj:
key_obj = dict_obj[key]
if key == SEARCH_KEY_NAME and key_obj == value:
return FOUND_FLAG
elif isinstance(key_obj, DictType):
inner = traverse_dict(key_obj, value)
if inner is not None:
return (key,) + inner
return None
if __name__ == "__main__":
value = "23314"
json_dict = decode_crono(CRONO_FILE)
result = traverse_dict(json_dict, value)
print result
</code></pre>