Here are a couple of things about json_decode :
- it returns the data, or
nullwhen there is an error - it can also return
nullwhen there is no error : when the JSON string containsnull - it raises a warning where there is a warning — warning that you want to make disappear.
To solve the warning problem, a solution would be to use the @ operator (I don’t often recommend using it, as it makes debuging a lot more harder… But here, there is not much of a choice) :
$_POST = array(
'bad data'
);
$data = @json_decode($_POST);
You’d then have to test if $data is null — and, to avoid the case in which json_decode returns null for null in the JSON string, you could check json_last_error, which (quoting) :
Returns the last error (if any)
occurred by last JSON parsing.
Which means you’d have to use some code like the following :
if ($data === null
&& json_last_error() !== JSON_ERROR_NONE) {
echo "incorrect data";
}