I agree that Make's syntax isn't ideal, but JSON doesn't seem like a move in the right direction. If you're going to give Make a new syntax, why not pick a more pleasant syntax?
XML is definitely not better than JSON IMO. Are you hinting at either S-expression, or something like YAML?
(For any other "custom syntax" we're better off sticking to make syntax itself)
However, in my opinion, from your list only s-expressions make a reasonable syntax that a human would write an maintain.
And, if you want that, well :) https://www.gnu.org/software/make/manual/html_node/Guile-Int...
I think if you want a simple serialization format to replace Make's syntax, s-expressions would be a better fit.
Regarding JSON, it is more verbose than Make. You need to use quote around strings, commands, everything. Compare:
foo.o: foo.c gcc -c foo.c
with
{ 'foo.o' => ['foo.c'; 'gcc -c foo.c'] }