docs: def importJsonFile(self, fileName):
          """
          Imports a json file that contains all the information of a Profile. This function will
          completely override all members of the current Profile object.
  
          :ivar str fileName: The name of the input file to be imported.
          """
  
          infile = open(fileName)
          data = json.load(infile)
          infile.close()
          
          self.numCands = int(data["numCands"])
          self.numVoters = int(data["numVoters"])
  
          # Because the json.load function imports everything as unicode strings, we will go through
          # the candMap dictionary and convert all the keys to integers and convert all the values to
          # ascii strings.
          candMap = dict()
          for key in data["candMap"].keys():
              candMap[int(key)] = data["candMap"][key].encode("ascii")
          self.candMap = candMap
          
          # The Preference class is also not directly JSON serializable, so we exported the 
          # underlying dictionary for each Preference object. When we import, we will create a 
          # Preference object from these dictionaries.
          self.preferences = []
          for preferenceMap in data["preferences"]:
              count = int(preferenceMap["count"])
  
              # Because json.load imports all the items in the wmgMap as unicode strings, we need to
              # convert all the keys and values into integers.
              preferenceWmgMap = preferenceMap["wmgMap"]
              wmgMap = dict()
              for key in preferenceWmgMap.keys():
                  wmgMap[int(key)] = dict()
                  for key2 in preferenceWmgMap[key].keys():
                      wmgMap[int(key)][int(key2)] = int(preferenceWmgMap[key][key2])
  
              self.preferences.append(Preference(wmgMap, count))