(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — Retorna la representación JSON representation del valor dado
Retorna un string con la representación JSON de
value
.
value
El value
a ser codificado. Puede ser de cualquier
tipo menos un resource.
Esta función únicamente funciona con datos en UTF-8.
options
Máscara de bits que compuesta por JSON_HEX_QUOT
,
JSON_HEX_TAG
,
JSON_HEX_AMP
,
JSON_HEX_APOS
,
JSON_NUMERIC_CHECK
,
JSON_PRETTY_PRINT
,
JSON_UNESCAPED_SLASHES
,
JSON_FORCE_OBJECT
,
JSON_UNESCAPED_UNICODE
. El comportamiento de estas
constantes se describe en
la página de constantes de JSON.
Devuelve un string JSON codificado en caso de éxito o FALSE
en caso de error.
Versión | Descripción |
---|---|
5.4.0 |
Se añade al parámetro options las constantes JSON_PRETTY_PRINT , JSON_UNESCAPED_SLASHES , y JSON_UNESCAPED_UNICODE .
|
5.3.3 |
Se añade al parámetro option la constante JSON_NUMERIC_CHECK .
|
5.3.0 |
Se añade el parámetro options .
|
Ejemplo #1 Un ejemplo de json_encode()
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
El resultado del ejemplo sería:
{"a":1,"b":2,"c":3,"d":4,"e":5}
Ejemplo #2 Un ejemplo de json_encode() mostrando algunas de las opciones en acción
<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&');
echo "Normal: ", json_encode($a), "\n";
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
$b = array();
echo "Array vacío retornado como array: ", json_encode($b), "\n";
echo "Array vacío retornado como object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
$c = array(array(1,2,3));
echo "Array no asociativo retornado como array: ", json_encode($c), "\n";
echo "Array no asociativo retornado como objeto: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
$d = array('foo' => 'bar', 'baz' => 'long');
echo "Array asociativo siempre es retornado como objeto: ", json_encode($d), "\n";
echo "Array asociativo siempre es retornado como objeto: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
El resultado del ejemplo sería:
Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"] Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"] All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"] Array vacío retornado como array: [] Array vacío retornado como object: {} Array no asociativo retornado como array: [[1,2,3]] Array no asociativo retornado como objeto: {"0":{"0":1,"1":2,"2":3}} Array asociativo siempre es retornado como objeto: {"foo":"bar","baz":"long"} Array asociativo siempre es retornado como objeto: {"foo":"bar","baz":"long"}
Ejemplo #3 Ejemplo de array secuencial contra array no secuencial
<?php
echo "Array sencuencial".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong");
var_dump(
$sequential,
json_encode($sequential)
);
echo PHP_EOL."Array no secuencial".PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
);
echo PHP_EOL."Array secuencial con una clave destruida".PHP_EOL;
unset($sequential[1]);
var_dump(
$sequential,
json_encode($sequential)
);
?>
El resultado del ejemplo sería:
Array sencuencial array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(27) "["foo","bar","baz","blong"]" Array no secuencial" array(4) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" [4]=> string(5) "blong" } string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}" Array secuencial con una clave destruida array(3) { [0]=> string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(33) "{"0":"foo","2":"baz","3":"blong"}"
Nota:
En el evento de un fallo a codificar, json_last_error() puede ser usado para determinar la naturaleza exacta del error.
Nota:
Cuando se codifica un array, si las claves no están en una secuencia numérica continua comenzando por 0, todas las claves son codificadas como cadenas, y explícitamente especificadas para cada pareja clave-valor.
Nota:
Al igual que el codificador JSON de referencia, json_encode() generará JSON que es un valor simple (esto es, ni un objeto ni un array) si de proporciona un string, integer, float o boolean como entrada de
value
. Mientras que muchos decodificadores aceptarán estos valores como JSON válido, algunos no lo harán, ya que la especificación es ambigua en este aspecto.Para resumir, compruebe siempre que el decodificador de JSON puede manejar la salida que se genere desde json_encode().