Building a dict by reference is faster than recursively building a dict (slowest) or list of tuples.
dict:
return {key: obj}
…
d = {}
…
d.update(parse(value, path + '/' + str(key)))
…
row = parse(entry)
tuples:
return [(key, obj)]
…
d = []
…
d.extend(parse(value, path + '/' + str(key)))
…
row = dict(parse(entry))