Funciones de JSON
PHP Manual

json_encode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_encodeRetorna la representación JSON representation del valor dado

Descripción

string json_encode ( mixed $value [, int $options = 0 ] )

Retorna un string con la representación JSON de value.

Parámetros

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.

Valores devueltos

Devuelve un string JSON codificado en caso de éxito o FALSE en caso de error.

Historial de cambios

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.

Ejemplos

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 todas las opciones en acción

<?php
$a 
= array('<foo>',"'bar'",'"baz"','&blong&');

echo 
"Normal: ",  json_encode($a), "\n";
echo 
"Tags: ",    json_encode($aJSON_HEX_TAG), "\n";
echo 
"Apos: ",    json_encode($aJSON_HEX_APOS), "\n";
echo 
"Quot: ",    json_encode($aJSON_HEX_QUOT), "\n";
echo 
"Amp: ",     json_encode($aJSON_HEX_AMP), "\n";
echo 
"Unicode: "json_encode($aJSON_UNESCAPED_UNICODE), "\n";
echo 
"All: ",     json_encode($aJSON_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($bJSON_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($cJSON_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($dJSON_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"}"

Notas

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.

Ver también


Funciones de JSON
PHP Manual