I'm trying to logically traverse a JSON in Python and return the path of any String value that equals a value. I'm trying to traverse it recursively, but if multiple elements match the comparison, it only returns he first:
test_json = {
"a": {
"b": {
"c": {
"d": "foo"
}
}
},
"1": {
"2": {
"3": "bar"
}
},
"a1" : "foo"
}
def searchDict(d, path):
for k,v in d.iteritems():
if isinstance(v, dict):
path.append(k)
return searchDict(v, path)
else:
if v == "foo":
path.append(k)
path.append(v)
return path
print searchDict(test_json, [])
I want this to have the capacity to return something like:
a -> b -> c -> d -> foo
a1 -> foo
But instead it only iterates through the first sub-dictionary:
['a', 'b', 'c', 'd', 'foo']
This is probably easier than I'm making it, just having trouble logically solving it. Any ideas?