Como criar um arquivo JSON com PHP?
No PHP, a função json_encode
retorna uma string contendo uma representação JSON de um valor informado.
Mas, as vezes, além de convertermos para JSON, precisamos salvá-lo em um arquivo. Nem todo mundo sabe, mas essa é uma tarefa simples de ser realizada no PHP!
Criando um arquivo JSON
Como já dito, a função json_encode
retorna uma string que correspondente ao formato JSON de um determinado valor. Pelo fato de ser retornada uma string
, é fácil salvá-la em algum arquivo, bastando apenas utilizar a função file_put_contents
.
Veja:
$dados = [
'nome' => 'Wallace',
'linguagens' => [
'PHP',
'Javascript',
'Python',
'C#'
]
];
$arquivo = DIR . '/arquivo.json';
file_put_contents($arquivo, json_encode($dados));
Isso vai gerar um arquivo arquivo.json
na pasta onde o script é executado, com o seguinte conteúdo:
{"nome":"Wallace","linguagens":["PHP","Javascript","Python","C#"]}
Note que o JSON escrito no arquivo, que foi gerado a partir dos valores presentes na variável $dados
, contém apenas uma linha, sem nenhuma identação. Esse é o comportamento padrão da função json_encode
Isso ajuda a salvar alguns bytes na hora de escrever o seu arquivo pelo PHP. Porém, caso você precise que o seu JSON esteja formatado, você pode fazê-lo tranquilamente!
{% include ads_common.html %}
Criando um arquivo JSON formatado
A função json_encode
, além de converter os dados passados para JSON, também pode receber outros parâmetros, que permitem modificar o comportamento da função. No nosso caso, utilizaremos a constante JSON_PRETTY_PRINT
. Ao utilizarmos ela no segundo parâmetro de json_encode
, ela mudará a saída, para que o JSON seja retornado em um formato "mais amigável visualmente".
Veja:
$dados = [
'nome' => 'Wallace',
'linguagens' => [
'PHP',
'Javascript',
'Python',
'C#'
]
];
$arquivo = DIR . '/arquivo_formatado.json';
$json_formatado = json_encode($dados, JSON_PRETTY_PRINT);
file_put_contents($arquivo, $json_formatado);
O arquivo arquivo_formatado.json
será criado com o seguinte conteúdo:
{
"nome": "Wallace",
"linguagens": [
"PHP",
"Javascript",
"Python",
"C#"
]
}