Never manually walk through complex JSON objects again by using this function
<span class="hljs-comment"># recursivejson.py</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">extract_values</span><span class="hljs-params">(obj, key)</span>:</span>
<span class="hljs-string">"""Pull all values of specified key from nested JSON."""</span>
arr = []
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">extract</span><span class="hljs-params">(obj, arr, key)</span>:</span>
<span class="hljs-string">"""Recursively search for values of key in JSON tree."""</span>
<span class="hljs-keyword">if</span> isinstance(obj, dict):
<span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> obj.items():
<span class="hljs-keyword">if</span> isinstance(v, (dict, list)):
extract(v, arr, key)
<span class="hljs-keyword">elif</span> k == key:
arr.append(v)
<span class="hljs-keyword">elif</span> isinstance(obj, list):
<span class="hljs-keyword">for</span> item <span class="hljs-keyword">in</span> obj:
extract(item, arr, key)
<span class="hljs-keyword">return</span> arr
results = extract(obj, arr, key)
<span class="hljs-keyword">return</span> results