Vim lets you set equalprg option for each filetype. From Vim docs:
External program to use for "=" command. When this option is empty the internal formatting functions are used; either 'lisp', 'cindent' or 'indentexpr'. When Vim was compiled without internal formatting, the "indent" program is used. ...
Add following line to you .vimrc:
au FileType json setlocal equalprg=python\ -m\ json.tool
Now, to pretty format your JSON just type