К JSON можно относиться как к одной из разновидностей текстовых форматов передачи данных. Но для PHP это просто ещё одна скалярная строка. Как определить, что перед нами действительно JSON?
Чтобы убедиться, придется попытаться декодировать строку. При неудачной декодировке функция возвращает NULL:
1 2 3 |
if (!is_null(json_decode($JSON_string))) { // строка в формате JSON } |
Для полноты добавим проверку на то, что перед нами скаляр-строка. Тогда валидатор будет выглядеть так:
1 2 3 |
function isJSON($str) { return is_string($str) && !is_null(json_decode($str)); } |
В JSON может быть закодировано значение «NULL», тогда json_decode также возвращает NULL, как и в случае ошибки. В остальных случаях валидатор выдаёт верный результат.
1 2 3 4 |
echo isJSON(1); // выведет FALSE - верно, т.к. скаляр является числом echo isJSON("1"); // выведет TRUE - верно echo isJSON("NULL"); // выведет FALSE - тот самый особенный случай echo isJSON("[1,2,3]"); // выведет TRUE - верно |