import json, copy
from io import StringIO
sampleFile = StringIO('''
[{"something": "else"}, {"LastEvent": "ArmReoriented", "visible": true}]
''')
def hideReorientedArm(obj):
if isinstance(obj, dict):
if obj.get("LastEvent") == "ArmReoriented" and obj.get("visible") is True:
obj["visible"] = False
return obj
def walk(obj, updateFn):
if isinstance(obj, list):
obj = [walk(elem, updateFn) for elem in obj]
elif isinstance(obj, dict):
obj = {k: walk(v, updateFn) for k, v in obj.items()}
return updateFn(obj)
data = json.load(sampleFile)
data = walk(data, hideReorientedArm)
print(json.dumps(data))
aW1wb3J0IGpzb24sIGNvcHkKZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KCnNhbXBsZUZpbGUgPSBTdHJpbmdJTygnJycKW3sic29tZXRoaW5nIjogImVsc2UifSwgeyJMYXN0RXZlbnQiOiAiQXJtUmVvcmllbnRlZCIsICJ2aXNpYmxlIjogdHJ1ZX1dCicnJykKCmRlZiBoaWRlUmVvcmllbnRlZEFybShvYmopOgogICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgogICAgICAgIGlmIG9iai5nZXQoIkxhc3RFdmVudCIpID09ICJBcm1SZW9yaWVudGVkIiBhbmQgb2JqLmdldCgidmlzaWJsZSIpIGlzIFRydWU6CiAgICAgICAgICAgIG9ialsidmlzaWJsZSJdID0gRmFsc2UKICAgIHJldHVybiBvYmoKCmRlZiB3YWxrKG9iaiwgdXBkYXRlRm4pOgogICAgaWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgogICAgICAgIG9iaiA9IFt3YWxrKGVsZW0sIHVwZGF0ZUZuKSBmb3IgZWxlbSBpbiBvYmpdCiAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBkaWN0KToKICAgICAgICBvYmogPSB7azogd2Fsayh2LCB1cGRhdGVGbikgZm9yIGssIHYgaW4gb2JqLml0ZW1zKCl9CiAgICByZXR1cm4gdXBkYXRlRm4ob2JqKQoKZGF0YSA9IGpzb24ubG9hZChzYW1wbGVGaWxlKQpkYXRhID0gd2FsayhkYXRhLCBoaWRlUmVvcmllbnRlZEFybSkKcHJpbnQoanNvbi5kdW1wcyhkYXRhKSkK