PHP json_last_error() Function
The PHP json_last_error() function returns the last error (if any) occurred during the last JSON encoding/decoding.
Syntax
json_last_error()
Parameters
No parameter is required.
Return Value
Returns an integer, the value can be one of the following constants:
JSON error codes
Constants | Description |
---|---|
JSON_ERROR_NONE | No error has occurred |
JSON_ERROR_DEPTH | The maximum stack depth has been exceeded |
JSON_ERROR_STATE_MISMATCH | Invalid or malformed JSON |
JSON_ERROR_CTRL_CHAR | Control character error, possibly incorrectly encoded |
JSON_ERROR_SYNTAX | Syntax error |
JSON_ERROR_UTF8 | Malformed UTF-8 characters, possibly incorrectly encoded |
JSON_ERROR_RECURSION | One or more recursive references in the value to be encoded |
JSON_ERROR_INF_OR_NAN | One or more NAN or INF values in the value to be encoded |
JSON_ERROR_UNSUPPORTED_TYPE | A value of a type that cannot be encoded was given |
JSON_ERROR_INVALID_PROPERTY_NAME | A property name that cannot be encoded was given |
JSON_ERROR_UTF16 | Malformed UTF-16 characters, possibly incorrectly encoded |
Example: json_last_error() example
The example below shows the usage of json_last_error() function.
<?php //a valid json string $jsonObj[] = '{"a":10}'; //an invalid json string - //using ' instead of " for quotation //this will cause syntax error $jsonObj[] = "{'b':20}"; foreach ($jsonObj 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'; break; default: echo 'Unknown error'; break; } echo PHP_EOL; } ?>
The output of the above code will be:
Decoding: {"a":10} - No errors Decoding: {'b':20} - Syntax error, malformed JSON
Example: json_last_error() with json_encode()
In the example below the json_last_error() function is used with json_encode() function.
<?php //an invalid UTF8 sequence $text = "\xB1\x31"; $json = json_encode($text); $error = json_last_error(); var_dump($json, $error === JSON_ERROR_UTF8); ?>
The output of the above code will be:
string(4) "null" bool(true)
❮ PHP JSON Reference