code: def traverse_json_obj(obj, path=None, callback=None):
      
      if path is None:
          path = []
  
      if isinstance(obj, dict):
          value = {k: traverse_json_obj(v, path + [k], callback)
                   for k, v in obj.items()}
      elif isinstance(obj, list):
          value = [traverse_json_obj(elem, path + [[]], callback)
                   for elem in obj]
      else:
          value = obj
  
      if callback is None:
          return value
      return callback(value)
docs: Recursively loop through object and perform the function defined
      in callback for every element. Only JSON data types are supported.
      :param obj: object to traverse
      :param path: current path
      :param callback: callback executed on every element
      :return: potentially altered object