Для понимания что-же все таки за ошибка и почему выводится NULL

 

// A valid json string 
$json[] = '{"Organization": "PHP Documentation Team"}'; 
 
// An invalid json string which will cause an syntax 
// error, in this case we used ' instead of " for quotation 
$json[] = "{'Organization': 'PHP Documentation Team'}"; 
 
foreach ($json as $string) { 
    echo 'Decoding: ' . $string; 
    json_decode($string); 
    switch (json_last_error()) { 
        case JSON_ERROR_NONE: 
            echo ' - No errors'; 
            break; 
        case JSON_ERROR_DEPTH: 
            echo ' - Maximum stack depth exceeded'; 
            break; 
        case JSON_ERROR_STATE_MISMATCH: 
            echo ' - Underflow or the modes mismatch'; 
            break; 
        case JSON_ERROR_CTRL_CHAR: 
            echo ' - Unexpected control character found'; 
            break; 
        case JSON_ERROR_SYNTAX: 
            echo ' - Syntax error, malformed JSON'; 
            break; 
        case JSON_ERROR_UTF8: 
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; 
            break; 
        default: 
            echo ' - Unknown error'; 
            break; 
    } 
    echo PHP_EOL; 
}

 

Ну и несколько вариантов решения:

 

// если не utf-8
json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json), true );

 

json_decode(stripslashes($json))

 

$json = utf8_encode($json);
json_decode($json);

 

$json = str_replace('"', '"', $json);
json_decode($json);

 

json_decode(trim($json));