2016-10-12 98 views
1

我是json的新手,想要顯示json錯誤消息和錯誤代碼(如果存在錯誤)。 我也在使用php。JSON錯誤檢查是否語句

到目前爲止,我已經指派兩個變量:

$error_num = json_last_error(); 
$error_msg = json_last_error_msg(); 

但我很困惑,我應該投入的if語句。 我相信它應該是這樣的一些術語:如果錯誤存在... 但我沒有足夠的經驗來了解我可以如何做到這一點。

if (/* ERROR condition is true */) 
{ 
    echo "Error: " . $error_num . " " . $error_msg; 
} 
else 
{ 
    // .. DISPLAYS TABLE .. 
} 

我很感激任何幫助,你可以給我,因爲我只是在學習。

回答

0

我認爲你正在尋找這個

它返回一個錯誤(如果有的話)的最後一個JSON 編碼/解碼過程中發生。

<?php 
// 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; 
} 
?> 

參考鏈接http://php.net/manual/en/function.json-last-error.php

0

要檢查是否json_decode沒有錯誤試試這個:

if ($error_num !== JSON_ERROR_NONE) 
{ 
    echo "Error: " . $error_num . " " . $error_msg; 

} else { 
    // .. DISPLAYS TABLE .. 
} 

JSON_ERROR_NONE是一個PHP不變,這意味着未出錯