Update contact via REST and JSON request body
Please, do not put the api_key nor key into the get parameter, to they don't end up in logs and other places, they are better as a post param.

As for your question, you can have json="{'id':2..."} as a param, ie json encode the whole contact and put as as a string param into a (post) json param

You might be safer to return only the modified param, as some are likely to be ignored (eg. the modification_date) or might expect a different format when modified than read (less and less a problem, but you might bump into edge cases still)