PHP Function Reference

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

ConstantsDescription
JSON_ERROR_NONENo error has occurred
JSON_ERROR_DEPTHThe maximum stack depth has been exceeded
JSON_ERROR_STATE_MISMATCHInvalid or malformed JSON
JSON_ERROR_CTRL_CHARControl character error, possibly incorrectly encoded
JSON_ERROR_SYNTAXSyntax error
JSON_ERROR_UTF8Malformed UTF-8 characters, possibly incorrectly encoded
JSON_ERROR_RECURSIONOne or more recursive references in the value to be encoded
JSON_ERROR_INF_OR_NANOne or more NAN or INF values in the value to be encoded
JSON_ERROR_UNSUPPORTED_TYPEA value of a type that cannot be encoded was given
JSON_ERROR_INVALID_PROPERTY_NAMEA property name that cannot be encoded was given
JSON_ERROR_UTF16Malformed 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