According to ChatGPT there no simple way. It gives a couple of suggestions, but it's clear they contain pain. My guy feeling is that nothing good will come from this strategy.
However, depending on what the java code does, there's another option. Theoretically you could make a very thin dll that just calls your jar with whatever input makes sense, and blindly returns whatever the jar returned. The app using the dll would have no clue that the dll is razor thin. And considering you thought json was fine, I can't see any issues with this method either.
(If you go this route, why not make the dll slightly configurable, either via an .ini or the registry, so that it has no clue what to call by itself and needs to look in the config. That way you can reuse it for lots of projects and only need to adjust some parameters in the config - no actual change or recompilation needed.)