Resource Types
JsonSerializable
JSON
PHP Manual

# Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

The following constants indicate the type of error returned by json_last_error().

`JSON_ERROR_NONE` (integer)
  No error has occurred. Available since PHP 5.3.0.
`JSON_ERROR_DEPTH` (integer)
  The maximum stack depth has been exceeded. Available since PHP 5.3.0.
`JSON_ERROR_STATE_MISMATCH` (integer)
  Occurs with underflow or with the modes mismatch. Available since PHP 5.3.0.
`JSON_ERROR_CTRL_CHAR` (integer)
  Control character error, possibly incorrectly encoded. Available since PHP 5.3.0.
`JSON_ERROR_SYNTAX` (integer)
  Syntax error. Available since PHP 5.3.0.
`JSON_ERROR_UTF8` (integer)
  Malformed UTF-8 characters, possibly incorrectly encoded. This constant is available as of PHP 5.3.3.
`JSON_ERROR_RECURSION` (integer)

  The object or array passed to json_encode() include recursive references and cannot be encoded. If the `JSON_PARTIAL_OUTPUT_ON_ERROR` option was given, `NULL` will be encoded in the place of the recursive reference.

  This constant is available as of PHP 5.5.0.

`JSON_ERROR_INF_OR_NAN` (integer)

  The value passed to json_encode() includes either `NAN` or `INF`. If the `JSON_PARTIAL_OUTPUT_ON_ERROR` option was given, 0 will be encoded in the place of these special numbers.

  This constant is available as of PHP 5.5.0.

`JSON_ERROR_UNSUPPORTED_TYPE` (integer)

  A value of an unsupported type was given to json_encode(), such as a resource. If the `JSON_PARTIAL_OUTPUT_ON_ERROR` option was given, `NULL` will be encoded in the place of the unsupported value.

  This constant is available as of PHP 5.5.0.

The following constants can be combined to form options for json_encode().

`JSON_HEX_TAG` (integer)
  All < and > are converted to \u003C and \u003E. Available since PHP 5.3.0.
`JSON_HEX_AMP` (integer)
  All &s are converted to \u0026. Available since PHP 5.3.0.
`JSON_HEX_APOS` (integer)
  All ' are converted to \u0027. Available since PHP 5.3.0.
`JSON_HEX_QUOT` (integer)
  All " are converted to \u0022. Available since PHP 5.3.0.
`JSON_FORCE_OBJECT` (integer)
  Outputs an object rather than an array when a non-associative array is used. Especially useful when the recipient of the output is expecting an object and the array is empty. Available since PHP 5.3.0.
`JSON_NUMERIC_CHECK` (integer)
  Encodes numeric strings as numbers. Available since PHP 5.3.3.
`JSON_BIGINT_AS_STRING` (integer)
  Encodes large integers as their original string value. Available since PHP 5.4.0.
`JSON_PRETTY_PRINT` (integer)
  Use whitespace in returned data to format it. Available since PHP 5.4.0.
`JSON_UNESCAPED_SLASHES` (integer)
  Don't escape /. Available since PHP 5.4.0.
`JSON_UNESCAPED_UNICODE` (integer)
  Encode multibyte Unicode characters literally (default is to escape as \uXXXX). Available since PHP 5.4.0.
`JSON_PRESERVE_ZERO_FRACTION` (integer)
  Ensures that float values are always encoded as a float value. Available since PHP 5.6.6.

Resource Types
JsonSerializable
JSON
PHP Manual