code: def unserialize(j_obj, no_load=False):
      
      if not j_obj:
          return j_obj
      # print("Unserialize (%s): %s" % (no_load, j_obj))
  
      if no_load:
          data = j_obj
      else:
          data = json.loads(j_obj)
  
      if isinstance(data, dict):
          if '__sys_python_module__' in data:
              cls = get_alignak_class(data['__sys_python_module__'])
              # Awful hack for external commands ... need to be refactored!
              if data['__sys_python_module__'] in ['alignak.external_command.ExternalCommand']:
                  return cls(data['content']['cmd_line'], data['content']['creation_timestamp'])
  
              return cls(data['content'], parsing=False)
  
          data_dict = {}
          for key, value in list(data.items()):
              data_dict[key] = unserialize(value, True)
          return data_dict
  
      if isinstance(data, list):
          return [unserialize(item, True) for item in data]
  
      return data
docs: Un-serialize object. If we have __sys_python_module__ we try to safely get the alignak class
      Then we re-instantiate the alignak object
  
      :param j_obj: json object, dict
      :type j_obj: str (before loads)
      :param no_load: if True, j_obj is a dict, otherwise it's a json and need loads it
      :type no_load: bool
      :return: un-serialized object