2015-07-23 8 views
5

ich nicht in der Lage json dekodieren error.I meinen Code erwähnen unten zu behandeln: -Wie Handhabungsfehler von json dekodieren durch Versuch und fangen

try{ 
$jsonData=file_get_contents($filePath). ']'; 
$jsonObj = json_decode($jsonData, true); 
} catch(Exception $e){ 
    echo '{"result":"FALSE","message":"Caught exception: '. 
    $e->getMessage().' ~'.$filePath.'"}'; 
} 

Ich bin PHP-Programmierer. Entschuldigung, wenn etwas nicht stimmt.

+0

Siehe hier: http://stackoverflow.com/ questions/12265830/can-json-codieren-trigger-a-catch-block –

+0

möglich duplikat von [Detect bad json daten in PHP json \ _decode()?] (http://stackoverflow.com/questions/23481 52/detect-bad-json-Daten-in-php-json-decode) – num8er

Antwort

9

Ein anderer Weg json dekodieren Fehler zu behandeln: -

if ($jsonObj === null && json_last_error() !== JSON_ERROR_NONE) { 
    echo "json data is incorrect"; 
} 
4

json_decode gibt null zurück, wenn ein Fehler auftritt, z. B. kein gültiger JSON oder eine Überschreitung der Tiefe. Also im Grunde, Sie überprüfen nur mit, wenn die jsondata, die Sie erhalten, null ist oder nicht. Wenn dies der Fall ist, verwenden Sie json_last_error, um zu sehen, was schief gelaufen ist. Wenn nicht, fahren Sie mit dem Skript fort.

$json_data = json_decode($source, true); 

if($json_data == null){ 
    echo json_last_error() . "<br>"; 
    echo $source; // good to check what the source was, to see where it went wrong 
}else{ 
    //continue with script 
} 

So etwas sollte funktionieren.

+1

Keine gute Antwort, wenn die Eingabe '' null'' (eine Zeichenkette) ist. – TheStoryCoder

4

Mai werden Sie können versuchen, Validieren json_decode

try { 
    $jsonData = file_get_contents($filePath) . ']'; 
    $jsonObj = json_decode($jsonData, true); 

    if (is_null($jsonObj)) { 
    throw ('Error'); 
    } 
} catch (Exception $e) { 
    echo '{"result":"FALSE","message":"Caught exception: ' . 
    $e->getMessage() . ' ~' . $filePath . '"}'; 
} 

Read this too

+0

Warum rufen Sie 'is_null()' auf, wenn Sie einfach überprüfen können, ob '$ jsonObj === null 'ist? – reformed