Converter JSON para array e array para JSON em PHP
Use json_encode e json_decode corretamente, trate erros e preserve caracteres acentuados em PHP.
JSON para array
$json = '{"nome":"Ana","idade":28}';
$dados = json_decode(
$json,
true,
512,
JSON_THROW_ON_ERROR
);
echo $dados['nome'];
O segundo parâmetro true faz o PHP retornar um array associativo em vez de um objeto.
Array para JSON
$dados = [
'nome' => 'José',
'cidade' => 'Goiânia',
];
$json = json_encode(
$dados,
JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
);
JSON_UNESCAPED_UNICODE mantém caracteres como á, ç e ã legíveis no texto gerado.
Tratamento de erro
try {
$dados = json_decode(
$json,
true,
512,
JSON_THROW_ON_ERROR
);
} catch (JsonException $e) {
echo 'JSON inválido: ' . $e->getMessage();
}
JSON vindo de uma API
Boa prática: além de validar o JSON, confira o status HTTP da resposta antes de assumir que o conteúdo representa sucesso.
Assuntos:JSONjson_encodejson_decode