After lots of reading and searching I have found the problem to be with, I beleive magic_quotes_gpc being enabled on the server.
Thus, using:
json_decode(stripslashes($_POST['vehicle']));
In my example above removes the slashes and allows the JSON to be decoded properly.
Still not sure why sending a StringEntity causes a 403 error?