code: def loads_json(p_str, custom=None, meta=False, verbose=0):
      
      data = json.loads(p_str)
      if meta:
          md = {}
          for item in data:
              if item != "models":
                  md[item] = data[item]
          return ecp_dict_to_objects(data, custom, verbose=verbose), md
      else:
          return ecp_dict_to_objects(data, custom, verbose=verbose)
docs: Given a json string it creates a dictionary of sfsi objects
  
      :param ffp: str, Full file path to json file
      :param custom: dict, used to load custom objects, {model type: custom object}
      :param meta: bool, if true then also return all ecp meta data in separate dict
      :param verbose: int, console output
      :return: dict