Вот пара вещей о json_decode
:
- возвращает данные или
null
при возникновении ошибки
- также может возвращать
null
при отсутствии ошибки: когда строка JSON содержит null
- выдает предупреждение, где есть предупреждение - предупреждение о том, что вы хотите, чтобы исчезнуть.
Чтобы решить проблему предупреждения, можно было бы использовать оператор @
(я не часто рекомендую его использовать, поскольку это делает отладку намного сложнее ... Но здесь, выбора не так много) :
$_POST = array(
'bad data'
);
$data = @json_decode($_POST);
Затем вам нужно проверить, является ли $data
null
- и, чтобы избежать случая, когда json_decode
возвращает null
для null
в строке JSON, вы можете проверить json_last_error
, что (цитирование) :
Возвращает последнюю ошибку (если есть)
произошел при последнем разборе JSON.
Это означает, что вам придется использовать некоторый код, подобный следующему:
if ($data === null
&& json_last_error() !== JSON_ERROR_NONE) {
echo "incorrect data";
}