International PHP Conference 2015

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. Disponible desde PHP 5.3.0.
JSON_ERROR_DEPTH (integer)
Se ha excedido la profundidad máxima de la pila. Disponible desde PHP 5.3.0.
JSON_ERROR_STATE_MISMATCH (integer)
Por desbordamiento de buffer o cuando los modos no coinciden. Disponible desde PHP 5.3.0.
JSON_ERROR_CTRL_CHAR (integer)
Error del carácter de control, posiblemente se ha codificado de forma incorrecta. Disponible desde PHP 5.3.0.
JSON_ERROR_SYNTAX (integer)
Error de sintaxis. Disponible desde PHP 5.3.0.
JSON_ERROR_UTF8 (integer)
Caracteres UTF-8 mal formados, posiblemente codificados incorrectamente. Esta constante está disponible desde PHP 5.3.3.
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.

Esta constante está disponible a partir de PHP 5.5.0.

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.

Esta constante está disponible a partir de PHP 5.5.0.

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.

Esta constante está disponible a partir de PHP 5.5.0.

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. Disponible desde PHP 5.3.0.
JSON_HEX_AMP (integer)
Todos los & se convierten a \u0026. Disponible desde PHP 5.3.0.
JSON_HEX_APOS (integer)
Todas las ' se convierten a \u0027. Disponible desde PHP 5.3.0.
JSON_HEX_QUOT (integer)
Todas las " se convierten a \u0022. Disponible desde PHP 5.3.0.
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. Disponible desde PHP 5.3.0.
JSON_NUMERIC_CHECK (integer)
Codifica textos numéricos como números. Disponible desde PHP 5.3.3.
JSON_BIGINT_AS_STRING (integer)
Codifica integer grandes como su valor del string original. Disponible desde PHP 5.4.0.
JSON_PRETTY_PRINT (integer)
Utiliza espacios en blanco para formatear los datos devueltos. Disponible desde PHP 5.4.0.
JSON_UNESCAPED_SLASHES (integer)
No escapar /. Disponible desde PHP 5.4.0.
JSON_UNESCAPED_UNICODE (integer)
Codificar caracteres Unicode multibyte literalmente (por defecto es escapado como \uXXXX). Disponible desde PHP 5.4.0.
JSON_PARTIAL_OUTPUT_ON_ERROR (integer)
Sustituir algunos valores no codificables en lugar de fallar. Disponible desde PHP 5.5.0.
JSON_PRESERVE_ZERO_FRACTION (integer)
Se asegura de que los valores float son siempre codificados como valores de punto flotante. Disponible desde PHP 5.6.6.
add a note add a note

User Contributed Notes 4 notes

up
29
Yzmir Ramirez
11 months ago
If you curious of the numeric values of the constants, as of JSON 1.2.1, the constants have the following values (not that you should use the numbers directly):

JSON_HEX_TAG => 1
JSON_HEX_AMP => 2
JSON_HEX_APOS => 4
JSON_HEX_QUOT => 8
JSON_FORCE_OBJECT => 16
JSON_NUMERIC_CHECK => 32
JSON_UNESCAPED_SLASHES => 64
JSON_PRETTY_PRINT => 128
JSON_UNESCAPED_UNICODE => 256

JSON_ERROR_DEPTH => 1
JSON_ERROR_STATE_MISMATCH => 2
JSON_ERROR_CTRL_CHAR => 3

JSON_ERROR_SYNTAX => 4

JSON_ERROR_UTF8 => 5
JSON_OBJECT_AS_ARRAY => 1

JSON_BIGINT_AS_STRING => 2
up
5
on5wis at mac dot com
4 months ago
since json_encode expects a UTF-8 string there is no need to encode the € symbol.

I suggest you try to echo : json_encode('€');
It gives: "\u20ac"
I'm running PHP 5.6.5 on the CLI, on MacOS X 10.10
up
-6
Anonymous
2 months ago
I am working with "Marathi Language Data" and I found that when I encoded Marathi data to json using json_encode it returned me unicode values of each character like below:

Program :

<?php
$ar
= array("word" => "धाडस");
echo
json_encode($ar);
?>

Output of program is :

{"word":"\u0927\u093e\u0921\u0938"}

This is not expected output because what I need is output as

{"word":"धाडस"}

So I used following code:

<?php
$ar
= array("word" => "धाडस");
echo
json_encode($ar, JSON_UNESCAPED_UNICODE);
?>

And I got the required output as :

{"word":"धाडस"}
up
-16
jgarviahonrado at yahoo dot es
4 months ago
When decoding the euro symbol (€) as below:

json_encode(utf8_encode('€')

json_encode provides the UTF-8 code \u0080, but it would be really interesting to get the \u20AC one.

Maybe a new option could be added to get the current code or the \u20AC one.
To Top