Ошибка JSON_ERROR_SYNTAX в php 7

Недавно в одном из проектов обнаружилась проблема при тестировании на PHP 7. Тесты прогоняются на PHP 5.5.x, 5.6.x, 7.0.x и hhvm-3.12.x, но проваливаются они только на PHP 7. Проблема оказалась в функции json_decode(). А теперь немного подробнее.
Начиная с версии 7.0.0 при попытке декодировать пустую строку или null через функцию json_decode(), происходит ошибка JSON_ERROR_SYNTAX, которую можно получить через json_last_error(). Но сама функция декодирования возвращает правильный результат - null.
Таким образом, если вы просто преобразуете строку из json-а, то все пройдет корректно. Но при отслеживании ошибок, возникнет указанная проблема. Будьте бдительны, а лучше напишите свой хелпер на основе json_decode и используйте его. Например такой
class JsonHelper
{
public static function decode($s)
{
if ($s === null || $s === '') {
return null;
}
return json_decode($s);
}
}
Пример воспроизведения ошибки.
