Funções da JSON
PHP Manual

json_encode

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

json_encodeRetorna a representação JSON de um valor

Descrição

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

Retorna a string contendo a representação JSON de um value.

Parâmetros

value

O value a ser codificado. Pode ser qualquer tipo, exceto um resource.

Toda a string deve ser codificada como UTF-8.

Nota:

O PHP implementa uma extensção do JSON, além do especificado no » RFC 4627 - podendo também codificar e decodificar tipos escalares e NULL. RFC 4627 apenas suporta esses valores quando eles estão inseridos dentro de um objeto ou array.

Embora isso seja consistente com a definição expandida de "texto JSON" na nova » RFC 7159 (que pretende susceder RFC 4627) e ECMA-404, isto pode causar problemas de interoperabilidade com parsers JSON antigos que aderem estritamente a RFC 4627 quando decodificando um valor escalar.

options

Bitmask consistindo de 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. O comportamento destas constantes é descrito na página de constantes JSON.

depth

Define a profundidade máxima. Deve ser maior do que zero.

Valor Retornado

Retorna uma string JSON codificada em caso de sucesso ou FALSE em caso de falha.

Changelog

Versão Descrição
5.5.0 Parâmetro depth foi adicionado.
5.4.0 options JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, e JSON_UNESCAPED_UNICODE foram adicionadas.
5.3.3 option JSON_NUMERIC_CHECK foi adicionada.
5.3.0 O parâmetro options foi adicionado.

Exemplos

Exemplo #1 Um exemplo da json_encode()

<?php
$arr 
= array('a' => 1'b' => 2'c' => 3'd' => 4'e' => 5);

echo 
json_encode($arr);
?>

O exemplo acima irá imprimir:

{"a":1,"b":2,"c":3,"d":4,"e":5}

Exemplo #2 Um exemplo de json_encode() mostrando algumas opções em uso

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

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 
"Saída de um array vazio como array: "json_encode($b), "\n";
echo 
"Saída de um array vazio como objeto: "json_encode($bJSON_FORCE_OBJECT), "\n\n";

$c = array(array(1,2,3));

echo 
"Saída de um array não-associativo como array: "json_encode($c), "\n";
echo 
"Saída de um array não-associativo como objeto: "json_encode($cJSON_FORCE_OBJECT), "\n\n";

$d = array('foo' => 'bar''baz' => 'long');

echo 
"Array associativo sempre tem saída como objeto: "json_encode($d), "\n";
echo 
"Array associativo sempre tem saída como objeto: "json_encode($dJSON_FORCE_OBJECT), "\n\n";
?>

O exemplo acima irá imprimir:

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","é"]

Saída de um array vazio como array: []
Saída de um array vazio como objeto: {}

Saída de um array não-associativo como array: [[1,2,3]]
Saída de um array não-associativo como objeto: {"0":{"0":1,"1":2,"2":3}}

Array associativo sempre tem saída como objeto: {"foo":"bar","baz":"long"}
Array associativo sempre tem saída como objeto: {"foo":"bar","baz":"long"}

Exemplo #3 Exemplo de array sequencial versus não-sequencial

<?php
echo "Array sequencial".PHP_EOL;
$sequential = array("foo""bar""baz""blong");
var_dump(
 
$sequential,
 
json_encode($sequential)
);

echo 
PHP_EOL."Array não-sequencial".PHP_EOL;
$nonsequential = array(1=>"foo"2=>"bar"3=>"baz"4=>"blong");
var_dump(
 
$nonsequential,
 
json_encode($nonsequential)
);

echo 
PHP_EOL."Array sequencial com uma chave não definida".PHP_EOL;
unset(
$sequential[1]);
var_dump(
 
$sequential,
 
json_encode($sequential)
);
?>

O exemplo acima irá imprimir:

Array sequencial
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 não-sequencial
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 sequencial com uma chave não definida
array(3) {
  [0]=>
  string(3) "foo"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"

Notas

Nota:

Em uma eventual falha ao codificar, json_last_error() pode ser usado para determinar a natureza exata do erro.

Nota:

Quando codificando um array, se as chaves não são uma sequência numérica contínua começando por 0, todas as chaves são codificadas como strings, e especificadas explicitamente para cada par chave-valor.

Nota:

Assim como o codificador JSON referenciado, json_encode() irá gerar JSON que é um valor simples (isto é, nem um objeto e nem um array) se informado um value string, integer, float ou boolean como uma entrada. Enquanto a maioria dos decodificadores aceitará esses valores como JSON válido, alguns podem não aceitar, já que a especificação é ambígua neste ponto.

Para resumir, sempre teste se o seu decodificador JSON pode dar conta da saída que você gerar a partir de json_encode().

Veja Também


Funções da JSON
PHP Manual