def load(
    obj,
    env=None,
    silent=True,
    key=None,
    filename=None,
    validate=False,
    identifier="json",
):
    """
    Reads and loads in to "obj" a single key or all keys from source file.

    :param obj: the settings instance
    :param env: settings current env default='development'
    :param silent: if errors should raise
    :param key: if defined load a single key, else load all in env
    :param filename: Optional custom filename to load
    :return: None
    """
    if (
        obj.get("COMMENTJSON_ENABLED_FOR_DYNACONF") and commentjson
    ):  # pragma: no cover  # noqa
        file_reader = commentjson.load
        string_reader = commentjson.loads
    else:
        file_reader = json.load
        string_reader = json.loads

    # when load_file function is called directly it comes with module and line number
    if isinstance(identifier, SourceMetadata) and identifier.loader.startswith(
        "load_file"
    ):
        identifier = identifier.loader

    loader = BaseLoader(
        obj=obj,
        env=env,
        identifier=identifier,
        extensions=JSON_EXTENSIONS,
        file_reader=file_reader,
        string_reader=string_reader,
        validate=validate,
    )
    loader.load(
        filename=filename,
        key=key,
        silent=silent,
    )

    Reads and loads in to "obj" a single key or all keys from source file.

    :param obj: the settings instance
    :param env: settings current env default='development'
    :param silent: if errors should raise
    :param key: if defined load a single key, else load all in env
    :param filename: Optional custom filename to load
    :return: None
    
dynaconf/loaders/json_loader.py