Constantes predefinidas

Estas constantes están definidas por esta extensión y estarán disponibles sólo cuando la extensión haya sido compilada con PHP, o bien sea cargada dinámicamente en ejecución.

Las siguientes constantes indican el tipo de error retornado por json_last_error().

JSON_ERROR_NONE (integer)
No ha ocurrido ningún error.
JSON_ERROR_DEPTH (integer)
Se ha excedido la profundidad máxima de la pila.
JSON_ERROR_STATE_MISMATCH (integer)
Por desbordamiento de buffer o cuando los modos no coinciden.
JSON_ERROR_CTRL_CHAR (integer)
Error del carácter de control, posiblemente se ha codificado de forma incorrecta.
JSON_ERROR_SYNTAX (integer)
Error de sintaxis.
JSON_ERROR_UTF8 (integer)
Caracteres UTF-8 mal formados, posiblemente codificados incorrectamente.
JSON_ERROR_RECURSION (integer)

El objeto o array pasado a json_encode() incluye referencias recursivas y no se puede codificar. Si se proporcionó la opción JSON_PARTIAL_OUTPUT_ON_ERROR, se codificará null en el lugar de la referencia recursiva.

JSON_ERROR_INF_OR_NAN (integer)

El valor pasado a json_encode() incluye NAN o INF. Si se proporcionó la opción JSON_PARTIAL_OUTPUT_ON_ERROR, se codificará 0 en el lugar de estos números especiales.

JSON_ERROR_UNSUPPORTED_TYPE (integer)

Se proporcionó un valor de un tipo no admitido para json_encode(), tal como un resource. Si se proporcionó la opción JSON_PARTIAL_OUTPUT_ON_ERROR, se codificará null en el lugar del valor no admitido.

JSON_ERROR_INVALID_PROPERTY_NAME (integer)

Se ha usado una clave que empieza con el caracter \u0000 en la cadena de texto pasada a json_encode() al decodificar un objeto JSON en un objeto PHP.

JSON_ERROR_UTF16 (integer)

Un único sustituto UTF-16 no emparejado en una secuencia de escape unicode contenida en la cadena JSON pasada a json_encode().

Las siguientes constantes se pueden combinar para obtener opciones para json_encode().

JSON_HEX_TAG (integer)
Todos los < y > se convierten a \u003C y \u003E.
JSON_HEX_AMP (integer)
Todos los & se convierten a \u0026.
JSON_HEX_APOS (integer)
Todas las ' se convierten a \u0027.
JSON_HEX_QUOT (integer)
Todas las " se convierten a \u0022.
JSON_FORCE_OBJECT (integer)
Devuelve un objeto en vez de un array cuando se usa un array no asociativo. Especialmente útil cuando el destinatario del resultado espera un objeto y el array está vacío.
JSON_NUMERIC_CHECK (integer)
Codifica textos numéricos como números.
JSON_BIGINT_AS_STRING (integer)
Codifica integer grandes como su valor del string original.
JSON_OBJECT_AS_ARRAY (integer)
Decodifica objetos JSON como arrays de PHP. Esta opción se puede añadir automáticamente llamando a json_decode() con el segundo parámetro igual a true
JSON_PRETTY_PRINT (integer)
Utiliza espacios en blanco para formatear los datos devueltos.
JSON_UNESCAPED_SLASHES (integer)
No escapar /.
JSON_UNESCAPED_UNICODE (integer)
Codificar caracteres Unicode multibyte literalmente (por defecto es escapado como \uXXXX).
JSON_PARTIAL_OUTPUT_ON_ERROR (integer)
Sustituir algunos valores no codificables en lugar de fallar.
JSON_PRESERVE_ZERO_FRACTION (integer)
Se asegura de que los valores float son siempre codificados como valores de punto flotante.
JSON_UNESCAPED_LINE_TERMINATORS (int)
La finalización de línea se mantienen sin escapar cuando se indica JSON_UNESCAPED_UNICODE. Utiliza el mismo comportamiento que tenía antes de PHP 7.1 sin esta constante. Disponible desde PHP 7.1.0.

Las siguientes constantes pueden combinarse para formar opciones para json_decode() y json_encode().

JSON_INVALID_UTF8_IGNORE (int)
Ignorar caracteres UTF-8 inválidos. Disponible desde PHP 7.2.0.
JSON_INVALID_UTF8_SUBSTITUTE (int)
Convertir caracteres UTF-8 inválidos a \0xfffd (Carácter Unicode 'CARÁCTER DE SUSTITUCIÓN') Disponible desde PHP 7.2.0.
JSON_THROW_ON_ERROR (int)
Lanza JsonException si ocurre un error en lugar de establecer el estado global de error que se recupera con json_last_error() y json_last_error_msg(). JSON_PARTIAL_OUTPUT_ON_ERROR tiene prioridad sobre JSON_THROW_ON_ERROR. Disponible desde PHP 7.3.0.
JSON_ERROR_NON_BACKED_ENUM (int)
El valor pasado a json_encode() incluye un enum no respaldado que no se puede serializar. Disponible desde PHP 8.1.0.