O PHP evoluiu muito nos últimos 20 anos, até porque as exigências para programação Web também evoluíram. Uma delas foi a criação do formato JSON. Com isso, foi necessário criar funções específicas para lidar com esse novo tipo de dados.
Se você não sabe o que é JSON, convido a ler esse outro artigo aqui do site antes de continuar: O que você precisa saber sobre JSON
Neste artigo, você vai aprender a ler dados e arquivos JSON usando PHP. Em artigos futuros, você aprenderá outras técnicas para trabalhar com JSON através do PHP. Vamos lá!
Conheça a função json_decode ( )
A função json_decode ( )
é nativa do PHP e você pode usá-la para ler dados do tipo JSON. Essa função aceita até 4 argumentos. A sintaxe dela é a seguinte:
json_decode ( string [dados_json] , bool [associativa] , int [profundidade (max=512) ] , int [flags] )
dados_json. Os dados JSON a serem decodificados.
associativa. Use true
para retornar uma matriz associativa e false
para retornar string.
profundidade. A quantidade de aninhamentos que a função deve ler. No caso, 1 refere-se apenas às chaves raiz do JSON.
flags. Aceita uma das seguintes constantes: JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY
ou JSON_THROW_ON_ERROR
. Cada uma das opções resultará num JSON com caracteres codificados de maneira diferente. É possível corrigir erros de decodificação de caracteres Unicode, por exemplo.
Veja o JSON abaixo, que também utilizamos no artigo O que você precisa saber sobre JSON:
produto.json:
{
"title" : "Camiseta Hering Masculina",
"color" : "white",
"size" : "M",
"image" : "produtos/camiseta-hering-basica-masculina-5-pecas/14/9NC-0384-014/9NC-0384-014_zoom1.jpg"
"gender" : "male",
"price" :
{
"currency" : "R$",
"value" : 15999
}
"lenght" :
{
"unit" : "cm",
"value" : 150
}
"description" : "Aposte no básico com o Kit Camiseta Masculina Hering, perfeito para todos os momentos.",
"url" : "camiseta-hering-basica-masculina-5-pecas-branco-9NC-0384-014
}
Suponhamos que você precise ler esse arquivo para montar uma página para esse produto. Para isso, você precisa lembrar que esse JSON é apenas string
para o PHP. No entanto, trabalhar com string
não é a maneira mais recomendada, já que você precisaria criar do zero uma função para ler esse tipo de dados. Então, o que você precisa é converter essa string
num formato de dados mais fácil de ser trabalhado.
Esse formato é Array
. E como fazer isso? Primeiro, você deve obter o conteúdo do arquivo (string). Depois, usando a função json_decode ( )
, você irá transformar essa string numa matriz associativa, cujos dados poderão ser acessados mediante chaves e valores assim como no JSON. Veja agora como fazer isso:
$conteudo_string = file_get_contents ( "camiseta.json" ) ;
$camiseta = json_decode ( $conteudo , true ) ;
echo "Título do produto: " . $camiseta [ "title" ] . "";
echo "Cor do produto: " . $camiseta [ "color" ] . "" ;
echo "Tamanho do produto: " . $camiseta [ "size" ] . "" ;
// Saída:
// -------------
// Título do produto: Camiseta Hering Masculina
// Cor do produto: white
// Tamanho do produto: M
Nesse exemplo, $conteudo_string
obteve o conteúdo do arquivo em texto puro. Depois, esse conteúdo foi usado em json_decode( )
para converter os dados para uma matriz associativa. Com os dados em mãos, é possível exibir qualquer valor do JSON usando o nome da chave na matriz.
É assim que se faz a leitura de um JSON no PHP.
Na prática do dia-a-dia, raramente se tem um arquivo no formato JSON dessa forma. Na maioria das vezes, você vai obter dados JSON, e não arquivos. Mas isso não importa, desde que você consiga armazenar a string
do JSON numa variável para depois inseri-la na função json_decode ( )
.
Conclusão
JSON é o formato de dados mais utilizado na Web depois do HTML. Se você vai trabalhar com PHP, vai precisar saber decodificá-lo. O exemplo acima demonstrou quse tudo que você vai precisar para o seu projeto.
Ainda vamos falar sobre tratamento de erros, salvar JSON, matrizes associativas e muitos outros elementos que aparecerão para você nos seus futuros projetos. Continue me acompanhando e você aprenderá tudo que precisa! d: