Quick answer: Register at autoload: ResourceLoader.AddResourceFormatLoader(loader). Confirm _GetRecognizedExtensions returns your extension.

Custom JSON-as-Resource loader written. Load fails — default loader doesn’t handle .json. Yours never registered.

The Fix

[GlobalClass]
public partial class JsonLoader : ResourceFormatLoader {
    public override string[] _GetRecognizedExtensions()
        => new[] { "json" };
    public override Variant _Load(string path, string origin, bool useSubThreads, int mode) {
        // custom JSON-to-Resource conversion
    }
}

// AutoLoad: GlobalLoaders.cs
public override void _Ready() {
    ResourceLoader.AddResourceFormatLoader(new JsonLoader());
}

Without the Add call, your class exists but the engine never asks it for resources. Autoload guarantees registration on startup.

Verifying

ResourceLoader.Load on .json invokes your _Load. Without registration: error or default loader fails.

“Register at autoload. Loader runs.”

Related Issues

For C# Collections.Array, see Collections.Array. For C# disposed after await, see disposed.

Register. Load runs.