CodePráticov3.3.0
PHP

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.