Как проверить JSON в PHP

Сниппет

Функция json_last_error возвращает последнюю ошибку, возникшую во время кодирования и декодирования JSON.

downloadcopy
<?php
function isJSON($string) {
    if(is_array($string)) return false;
    if(!empty($string)){
        if($string == '{}') return true;
        json_decode($string);
        if(json_last_error() === JSON_ERROR_NONE) return true;
    }
    return false;
}

$json = '{"website":{"domain":"wtools.io","title":"Online Web Tools"}}';
if(isJSON($json)){
    echo "Действительный JSON";
} else {
    echo "Недействительный JSON";
}

Но лучший способ - это функция, которая возвращает массив или false - если JSON недействителен (чтобы избежать вызова функции json_decode 2 раза):

downloadcopy
<?php
function isJSON($string) {
    if(!empty($string) && !is_array($string)){
        if($string == '{}') return [];
        $res = json_decode($string, true);
        if(json_last_error() === JSON_ERROR_NONE) return $res;
    }
    return false;
}

$json = '{"website":{"domain":"wtools.io","title":"Online Web Tools"}}';
$data = isJSON($json);
if($data!==false){
    print_r($data);
} else {
    echo "Недействительный JSON";
}

Если вы хотите проверить JSON онлайн, вы можете использовать наш бесплатный инструмент.