import json, glob

# 1.0.111 app.json (working)
w = None
for f in glob.glob("/opt/expo-ota/updates/pixiesprout/1.0.111/*/app.json"):
    w = json.load(open(f))
    break
# 1.0.112 app.json (failing)
n = json.load(open("/opt/expo-ota/updates/pixiesprout/1.0.112/6a76f82ebce64410088d0759/app.json"))

def flat(d, p="", out=None):
    if out is None:
        out = {}
    for k, v in d.items():
        kk = p + "." + k if p else k
        if isinstance(v, dict):
            flat(v, kk, out)
        else:
            out[kk] = v
    return out

wf = flat(w)
nf = flat(n)
allk = sorted(set(wf) | set(nf))
print("KEY                                                         1.0.111                 1.0.112")
for k in allk:
    a = str(wf.get(k))
    b = str(nf.get(k))
    mark = "   <-- DIFF" if a != b else ""
    print("%-62s %-23s %-23s%s" % (k[:60], a[:21], b[:21], mark))
