json_encode Retorna la representación JSON del valor dado &reftitle.description; stringjson_encode mixedvalue intoptions0 intdepth512 Devuelve un string con la representación JSON de value. &reftitle.parameters; value El value a ser codificado. Puede ser de cualquier tipo menos un resource. Todos los datos de tipo string deben estar codificados con UTF-8. &json.implementation.superset; 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_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR. El comportamiento de estas constantes se describe en la página de constantes de JSON. depth Establece la profundidad máxima. Debe ser mayor que cero. &reftitle.returnvalues; Devuelve un string JSON codificado en caso de éxito &return.falseforfailure;. &reftitle.changelog; &Version; &Description; 5.6.6 Se añadió la opción JSON_PRESERVE_ZERO_FRACTION del parámetro option. 5.5.0 Se añadió el parámetro depth. 5.4.0 Se añadió al parámetro options las constantes JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, y JSON_UNESCAPED_UNICODE. 5.3.3 Se añadió al parámetro option la constante JSON_NUMERIC_CHECK. 5.3.0 Se añadió el parámetro options. &reftitle.examples; Un ejemplo de <function>json_encode</function> 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?> ]]> &example.outputs; Un ejemplo de <function>json_encode</function> mostrando algunas de las opciones en acción ',"'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"; ?> ]]> &example.outputs; ","'bar'","\"baz\"","&blong&","\u00e9"] Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apos: ["","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Quot: ["","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Amp: ["","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode: ["","'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 de la opción JSON_NUMERIC_CHECK ]]> &example.outputs; string(7) "+123123" [1]=> string(7) "-123123" [2]=> string(5) "1.2e3" [3]=> string(7) "0.00001" } string(28) "[123123,-123123,1200,1.0e-5]" String que contienen números formateados incorrectamente array(2) { [0]=> string(13) "+a33123456789" [1]=> string(4) "a123" } string(24) "["+a33123456789","a123"]" ]]> Ejemplo de array secuencial contra array no secuencial "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) ); ?> ]]> &example.outputs; 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"}" ]]> Ejemplo de la opción <constant>JSON_PRESERVE_ZERO_FRACTION</constant> ]]> &example.outputs; &reftitle.notes; En el evento de un fallo a codificar, json_last_error puede ser usado para determinar la naturaleza exacta del error. 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. 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. &reftitle.seealso; JsonSerializable json_decode json_last_error serialize