Your initial process renamed files by appending `.json`. For example `file1` (matching the pattern `file?`) was renamed to `file1.json`. The reverse is more complicated and requires a little shell script processing
find . -type f -name 'file?.json' -exec sh -c 'mv -- "$1" "${1%.json}"' _ {} \;
This will invoke `sh` for each file found by `find`. Typically a more efficient process can be created for very little increase in complexity:
find . -type f -name 'file?.json' -exec sh -c 'for f in "$@"; do mv -- "$f" "${f%.json}"; done' _ {} +
Both solutions use the POSIX shell substitution `${var%suffix}`, which would return a value corresponding to `$var` with the literal text `suffix` removed from the end of its value.
var=hello.txt
echo "${var%.txt}" # "hello" because ".txt" is removed
echo "${var%.zzz}" # "hello.txt" because there is no "zzz" suffix