Boteco Digital

Trocando dados utilizando JSON

13/05/2010
Rodrigo Aramburu

JSON é um formato leve de troca de informações que em muitos casos está sendo utilizado para substituir o XML ou mesmo utilizado em conjundo.

É um formato de dados fácil de escrever e ler por seres humanos e é bastante fácil de ser interpretado por computadores, sendo possível converte-lo facilmente para a notação de objetos JavaScript, o que o torna um boa opção para AJAX, principalmente quando necessitamos processar de alguma forma os dados buscados via AJAX.

Vejamos um exemplo do formato JSON:

{
"nome": "Rodrigo",
"sobrenome": "Aramburu",
"idade":"25",
"site":"http://www.botecodigital.info"
}

O formato é bem simples, um objeto é formado de vários membros dentro de chaves. Um membro é formado de uma string que será o nome da variável e um valor que pode ser: string, numérico, lógico, um array ou um outro objeto.

Vejamos um exemplo um pouco mais complexo:

{
    "nome":"Loja Exemplo",
    "produtos":[
                {"nome":"Monitor LCD","preco":350},
                {"nome":"Gravador de DVD","preco":120},
                {"nome":"Pendrive","preco":60},
               ]
}

Neste objeto temos 2 membros: nome que é tem um valor string e produtos que é um array de outros objetos que possuem dois membros: nome e preco.

Podemos interpretar o formato JSON utilizando uma função da biblioteca JQueryjQuery.parseJSON – ela recebe o documento JSON como parâmetro e devolve um objeto JavaScript com os valores.

Exemplo:

var dados = '{"nome": "Rodrigo","sobrenome": "Aramburu","idade":"25","site":"http://www.botecodigital.info"}';
var obj = jQuery.parseJSON(dados);

alert(obj.nome);
alert(obj.sobrenome);
alert(obj.idade);
alert(obj.site);

Bastante simples! Deve ser mostrado em janela de alert as palavras “Rodrigo”, “Aramburu”, “25″ e “http://www.botecodigital.info”. Como podemos notar isto torna muito fácil manipular uma série de valores contidos dentro de uma string ou arquivo arquivo.

Mais um exemplo para reforçar:

var dados  = '{ ';
    dados += '"nome":"Loja Exemplo",';
    dados += ' "produtos":[';
    dados += '       {"nome":"Monitor LCD","preco":350},';
    dados += '       {"nome":"Gravador de DVD","preco":120},';
    dados += '       {"nome":"Pendrive","preco":60}';
    dados += '    ]';
    dados += '}';
var obj = jQuery.parseJSON(dados);

alert( obj.nome);
alert( obj.produtos[0].nome );
alert( obj.produtos[0].preco );
alert( obj.produtos[1].nome );
alert( obj.produtos[1].preco );

Agora vamos ver a real vantagem de utilizar JSON que é utilizá-lo para fazer AJAX e para isso a biblioteca JQuery nos fornece uma função chamada $.getJSON.

Exemplo:

        $(document).ready(function(){
              $.getJSON('dados.json', function(data) {
                   $('#nome').html( data.nome);
                   $('#sobrenome').html( data.sobrenome );
                   $('#idade').html( data.idade );
                   $('#site').html( data.site );
             });
    });

A função $.getJSON recebe como parâmetros um nome de arquivo com dados no formato JSON, após o arquivo ser carregado ele é convertido em um objeto e passado por parâmetro(data) para a função que é responsável por manipular os valores.

Veja o exemplo de uso de JSON




Atualmente existe 6 comentários

  1. Luis 06/10/2010:

    Boa tarde Rodrigo. Essa ideia é super interesante, porém no meu caso, a maior duvida seria fazer a requisição para um banco de dados.
    Ou seja, no botão (Clique aqui) eu teria uma textbox solicitando um numero (por exemplo) e a busca seria feita em uma tabela, que me retornaria os dados referentes a esse numero. Explicando melhor: Digito o codigo de um produto e é retornado os dados do mesmo. Isso seria possivel usando esse exemplo? Teriam algo como exemplo?

  2. Rodrigo Aramburu 07/10/2010:

    Sim poderia se feito, basta tu criar um formulário em ajax(tem um exemplo no blog) que envie o ID e no submit tu executa o $.getJSON em vez do $.post e insere os valores retornado no input.

    $(‘#input_sobrenome’).val( data.sobrenome );
    $(‘#input_idade’).val( data.idade);

  3. Luis Santos 27/10/2010:

    Ola Rodrigo como vai ?, cara após muito tempo fora da área de codificação resolvi volta… dizem que o filho prodigo a casa torna… ó eu aqui… cara sou da época da programação clipper e agora estou começando a estudar php .. me deparei com o tal do JSON mas acho que o cerebro atrofiou.. ví os exemplos que voce postou mas nao entendi direito… no primeiro box voce mostra umas variaveis e seus conteudos … mas ela estão onde … por exemplo eu clique no link que remete a http://www.botecodigital.info/exemplos/json/ dai ele mostrou uma tela que pediu que clique … ok ele trouxe os dados … mas os dados estavam guardados onde…num banco de dados?, num arquivo texto? qual a extensão desse arquivo… isso eu nao entendi direito — desculpe a ignorancia… e desde já agradeço a atenção. Um forte Abraço

  4. Rodrigo Aramburu 27/10/2010:

    No caso do exemplo eu tinha guardado os dados em um arquivo de texto(primeiro box), que foi lido via uma requisição do tipo AJAX, transformado em uma String e depois processado pelo método do JQuery.

    A grande vantagem do JSON é que o arquivo de texto pode ser gerado por qualquer linguagem(com seus dados vindo de um BD ou de outro lugar) e acessado via Javascript.

    O JSON é somente um formato de troca de dados entre “aplicações” que facilita bastante o acesso via AJAX.

  5. Leandro 02/03/2011:

    Como faço para trazer conteudo encadeado? Tipo em uma URL tenho Marcas e em outra Modelos de produtos.

    Tenho que escrever assim:

    Marcas
    —> Modelos

    Ou seja de acordo com a marca tem que trazer os modelos.

    Não consigo usar o JSON encadeado.

  6. Rodrigo Aramburu 04/03/2011:

    Leandro não entendi.

Deixe um comentário