Well, the manual is quite clear:
The string ‘{}' is replaced by the current file name being processed [...]
find does not provide additional placeholders that would manipulate the file name like gnu parallel does with its {.}, {/} etc... however, there is an alternative to find which does: it's called fd (sometimes fdfind) and if you used that one you could run:
fd -e json -x mv -- {} {.}
fd -e json means find files with json extension, -x stands for "execute" then {} and {.} are placeholders for file name and respectively file name without extension (same string replacements as gnu parallel).
Note that you'll need to quote {} (as '{}') in rc, akanga and older versions of fish, and {.} in those plus csh, tcsh, zsh -o braceccl, where {/} have a special meaning.
Also beware that by default fd (contrary to find) ignores hidden files (those whose name starts with a . or are below a directory whose name starts with a . but also those mentioned in .ignore/.gitignore/.git/ignore/.fdignore... files; see the -H/--hidden, -I/--no-ignore, -u/--unrestricted options to change that) and those whose name cannot be decoded as UTF-8 (regardless of the locale).
rename. But I was thinking aboutfindand if I can subtstring the{}var :) It doesn't even matter if I usemvorechoor any other command. That was just the first best example I could come up with^^for-loop. I don't know, I just have the feeling that there has to be a better way to do it^^findcan't do it itself. Using{} +with a loop in the shell just optimizes it by starting fewer shell processes.