You are on page 1of 26

Como trabalhar com JSON em Node.

js / JavaScript
Recentemente eu comecei a aprender e trabalhar em plataforma
Node.js. Ento, agora estou novamente escovar minha habilidade JavaScript
h muito esquecido. JSON um formato comum que enfrentamos a cada
momento e, em seguida, em JavaScript, se o seu lado do cliente ou do lado do
servidor. Como nodejs ser uma plataforma do lado do servidor, ele tem um
pouco mais de capacidade do que JavaScript no navegador, como a escrita
para o sistema de arquivos etc.
Estou tentando agregar a maior parte das operaes que normalmente
podemos realizar relacionado com JSON objeto. Embora a maior parte deste
tutorial ser aplicada a ambos os tipos de JavaScript, poucos poderiam ser
especfico para Node.js.

Cadeia Para JSON Objeto:


Isto muito mais fcil e simples como a seguir:
1
2
3

var jsonString = "{" chave ":" valor "}" ;


var jsonObj = JSON.parse (jsonString);
console.log (jsonObj.key);

Como voc pode ver, estamos usando o built-in JSON mundial objeto para
analisar uma cadeia que tem dados JSON. Alm disso, pode ser boa ideia usar
".trim) (" mtodo na corda, se voc acha que pode haver alguma chance de etc
espao extra na cadeia de JSON. Caso contrrio, ele no vai se analisado e
voc vai enfrentar um erro inesperado.

JSON objeto Para Cadeia:


Como tal como no caso anterior, podemos usar o mtodo 'stringify' do mesmo
objeto global para converter um dado JSON para dados de cadeia. Isto pode
ser feito facilmente como como a seguir:
1
2

var jsonObj = { 'chave' : 'value' };


console.log (JSON.stringify (jsonObj));

Trate Definido Classe Instncia Para


JSON string user:
Se voc estiver escrevendo estilo JavaScript OOP e deseja converter uma
instncia de objeto para JSON como string (com o seu nome atributos / valor
como key / value), voc ainda pode usar o mesmo objeto JSON para
abordagem de cadeia como a seguir:
1
2
3
4
5
6
7
8
9

funo MyClass () {
este .a = "algum valor" ;
este .b = {
"Chave" : "uma outra estrutura json '
};
}
var instance = novas MyClass ();
console.log (JSON.stringify (instncia));

No entanto, voc ter que ter cuidado para que voc est declarando
propriedades corretamente, em vez de declar-las como varivel local. Esta
discusso pilha de estouro tambm pode ajudar a compreender as diferenas
facilmente.

Leia JSON partir do Sistema de


Arquivos Em NodeJS:
Se voc estava tentando pesquisando apenas para esta finalidade, pode ter
chegado a esta essncia que mostra exemplo, com o apoio do sistema de
arquivos de nodejs (fs mdulo). Mas, eu realmente no vejo qualquer sentido
de que, como se pode simplesmente fazer a mesma coisa por:
1

var jsonObj = require ( "./path/to/myjsonfile.json" );

Aqui, NodeJS ler automaticamente o arquivo, analisar o contedo de um objeto


JSON e atribui isso varivel lado esquerdo. to simples quanto isso!

Adicionar novo elemento a Existing


JSON Objeto:

Diga, voc tem um objeto json existente, o que voc deseja modificar para
adicionar novo par (s) chave / valor. Voc pode fazer isso usando qualquer uma
das duas maneiras, como abaixo:
1
2
3
4
5

var myJson = { 'chave' : 'value' };


// Novo elemento
myJson.key2 = "valor2" ;
// Ou
myJson [key3] = 'value3' ;

Excluir um elemento de um objeto


JSON:
Bem, para apagar um elemento de um objeto JSON, isso pode ser feito usando
a palavra-chave "apagar". Um exemplo dado abaixo:
1
2

var myJson = { 'chave' : 'value' };


excluir myJson [ 'chave' ];

Iterao sobre um objeto JSON:


s vezes voc vai ser necessrio atravessar cada um dos elementos do objeto
JSON. Isso pode ser feito em um loop for facilmente quanto como abaixo:
1
2
3
4

var myJson = { 'chave' : 'valor' , 'key2' : 'valor2' };


para ( var myKey em myJson) {
console.log ( "key:" + myKey + ", valor:" + myJson [myKey]);
}

No entanto, o cdigo acima poderia dar-lhe de erro no caso de o valor em si


um objeto JSON.Ento, voc vai querer verificar se o valor em si json ou
no e segur-lo assim.

Verifique Existncia Key:


Se em algum momento preciso verificar se um objeto json tem uma chave
especfica, podemos verificar que, com abordagem a seguir:
1
2
3
4

var myJson = { 'chave' : 'valor' , 'key2' : 'valor2' };


se (myJson.hasOwnProperty ( "Key2" )) {
// Faz alguma coisa se a chave de existir
}

Comparando Dois objetos JSON:


Se voc precisa para comparar dois objetos JSON para verificar se eles so
iguais ou no, melhor para repetir e comparar cada propriedade. Como
referncia, por favor visite esta discusso pilha de estouro .

Algo Mais?
Se voc acha que alguma coisa est faltando ou algo no est claro sobre a
utilizao de dados JSON em Node.js / JavaScript, por favor, pergunte-me
saber por comentar aqui. Codificao feliz

JSON (JavaScript Object Notation - Notao de Objetos JavaScript) uma


formatao leve de troca de dados. Para seres humanos, fcil de ler e
escrever. Para mquinas, fcil de interpretar e gerar. Est baseado em um
subconjunto da linguagem de programao JavaScript, Standard ECMA-262
3a Edio -Dezembro - 1999. JSON em formato texto e completamente
independente de linguagem, pois usa convenes que so familiares s
linguagens C e familiares, incluindo C++, C#, Java, JavaScript, Perl, Python e
muitas outras. Estas propriedades fazem com que JSON seja um formato ideal
de troca de dados.
JSON est constitudo em duas estruturas:
Uma coleo de pares nome/valor. Em vrias linguagens, isto
caracterizado como um object, record, struct, dicionrio, hash table,
keyed list, ou arrays associativas.
Uma lista ordenada de valores. Na maioria das linguagens, isto
caracterizado como uma array, vetor, lista ou sequncia.
Estas so estruturas de dados universais. Virtualmente todas as linguagens de
programao modernas as suportam, de uma forma ou de outra. aceitavel
que um formato de troca de dados que seja independente de linguagem de
programao se baseie nestas estruturas.

Em JSON, os dados so apresentados desta forma:


Um objeto um conjunto desordenado de pares nome/valor. Um objeto
comea com { (chave de abertura) e termina com } (chave de fechamento). Cada
nome seguido por : (dois pontos) e os pares nome/valor so seguidos
por , (vrgula).

Uma array uma coleo de valores ordenados. O array comea


com [ (conchete de abertura) e termina com ] (conchete de fechamento). Os valores
so separados por , (vrgula).

Um valor (value, na imagem acima) pode ser uma cadeia de caracteres


(string), ou um nmero, ou true ou false, ou null, ou um objeto ou uma
array. Estas estruturas podem estar aninhadas.

Uma string uma coleo de nenhum ou mais caracteres Unicode, envolvido


entre aspas duplas usando barras invertidas como caracter de escape. Um

caracter est representando como um simples caracter de string. Uma cadeia


de caracteres parecida com uma cadeia de caracteres em C ou Java.

Um nmero similar a um nmero em C ou Java, exceto quando no se usa


os nmeros octais ou hexadecimais.

Espaos em branco podem ser inseridos em quanlquer parte dos smbolos.


Exceto pequenos detalhes de codificao, a linguagem completamente
descrita.

JSON Uma introduo

A troca de dados sempre foi uma prtica (e necessidade) comum no desenvolvimento de sistemas, seja
desktop ou web, os anos passaram e vrios padres/modelos surgiram, persistiram, morreram,
renasceram, morreram de vez e etc..
Nos sistemas desktop o EDI sempre foi bastante utilizado, o tempo passou, a web chegou e ficou
complicado manipular um arquivo de texto separado por ponto-e-vrgula de sabe-se l quantos mbs. Se
voc trabalhava com quantidade de caracteres e faltasse um caractere, sua consistncia toda ia por gua
abaixo, se trabalhava seguindo algum caractere padro (ponto-e-vrgula, por exemplo) e esse caractere
repetia em alguma string, novamente dor de cabea, logo ento surgiu o nosso conhecido XML, era muito
mais simples e organizado trabalhar com uma linguagem de marcao semelhante ao HTML, a sua
eficincia tanta que o XML altamente utilizado at hoje (de acordo com a Wikipdia o XML surgiu em
1990).
O tempo continuou a passar, as pessoas, a web e as nossas necessidades mudaram, com os novos
conceitos de usabilidade, web semntica, experincia de usurio e etc. o uso de Ajax se tornou quase que
uma obrigao, manipulao de dados com javascript se fez e faz muito necessria. E podemos afirmar,
trabalhar com XML e javascript no das atividades mais amigveis. A partir dessa necessidade (no s,
mas principalmente dela) surge o JSON (Javascript Object Notation).
Sua estrutura nada mais que um Literal. Abaixo um exemplo:
{
//-- Primeiro colocamos o nome da propriedade,
// e usamos dois pontos ":" para separarmos do valor da propriedade
nome: "Edjan",
sobrenome: "Santos",
site: "http://www.labirintorium.com.br"
}
A grande vantagem do JSON ao XML ao se trabalhar com Javascript justamente o fato de um JSON ser
um objeto do javascript, sua manipulao simples e natural.
Vamos ilustrar melhor a vantagem, consideremos o seguinte XML:
<?xml version="1.0" encoding="utf-8" ?>
<registros>
<usuario nome="Edjan" sobrenome="Santos"
site="http://www.labirintorium.com.br"></usuario>
</registros>
Vamos visualiz-lo com javascript:
function xmlLoader(xmlUrl){
var objXML;
try {
objXML = new ActiveXObject("Microsoft.XMLDOM");
} catch(ex) {}
try {
objXML = document.implementation.createDocument("","",null);
} catch(e) {}
try
{
objXML.async = false;
objXML.load(xmlUrl);
return objXML;
} catch(exc) {return(null);}
}

var xml = xmlLoader("http://www.labirintorium.com.br/artigos/json/dados.xml");


var msg = "";
var usuario = xml.getElementsByTagName("usuario")[0];
for(var i=0; i
Agora vamos visualizar com javascript uma estrutura JSON:

var objJSON = {
nome: "Edjan",
sobrenome: "Santos",
site: "http://www.labirintorium.com.br"
};
alert(" nome:"+objJSON.nome+"\n sobrenome: "+objJSON.sobrenome+"\n site:
"+objJSON.site);
Viu como simples? claro que essa estrutura est bem bsica, estamos trabalhando
apenas com um registro tanto no XML quanto no JSON mas acredito que seja o suficiente
para ilustrar a grande vantagem de se utilizar JSON principalmente com javascript.

No site JSON.org possvel encontrar vrias classes para muitas linguagens, classes prontas
e recomendadas para linguagens como C#, PHP, JSP, C, Flex, Python, etc., alm de outras
referncias ao uso do JSON.

O objetivo desse artigo foi explicar de forma breve o que o JSON, pra que ele serve e
principalmente por que us-lo com Javascript. Como afirmei acima e voc pode observar no
site do JSON, possvel utiliz-lo com muitas linguagens, fica a seu cargo utiliz-lo ou no.
Como tudo na vida, o JSON tambm tem seus pontos negativos, que talvez eu aborde
futuramente em outro artigo, mas por enquanto voc pode ler o excelente artigo do Henry
Story que j esclarece muita coisa.

Agora fica a misso de utilizar o JSON na prtica, experimente em seus projetos e veja os
benefcios de estruturas organizadas, padronizadas e rpidas!
Read more: http://www.linhadecodigo.com.br/artigo/2613/json-umaintroducao.aspx#ixzz3WAZeC3nC

Breve Introduo ao JSON


No post Como Montar um Grid utilizando Ext JS, citei que era possvel
carregar
os
dados
de
um
grid
atravs
de
JSON.
O post de hoje tem como objetivo de fazer uma breve introduo sobre
JSON.
JSON (JavaScript Object Notation Notao de Objetos JavaScript) uma
formatao leve de troca de dados, tambm conhecido como um
sucessor do XML. JSON em formato texto muito simples e ao mesmo

tempo elegante, alm de ser em formato para troca de informaes


entre o browser e o servidor.
O JSON tambm mais rpido e mais leve que o XML. Enquanto que no
XML tratamos todos os dados como string, os objetos JSON so tipados
(string, number, array, boolean).
Um objeto JSON pode ter a forma de duas estruturas:

Uma coleo de pares nome/valor

Uma lista de valores

Exemplos

O objeto meuPrimeiroJSON possui 3 propriedades, ou 3 pares nome/valor.


O nome de cada par : nome, sobrenome e idade. O valor pode ser
qualquer objeto Javascript. Neste exemplo, o valor de cara par,
respectivamente: Loiane, Groner, 23. Note que nome e sobrenome so
strings e a idade um nmero.
Como j citado, o formato dos dados chamado de JSON. O que o torna
poderoso o fato do valor porder ser qualquer tipo de dados, desde uma
string at arrays e outros objetos, podendo formar tipos complexos de
dados, como os da estrutura abaixo:

Para converter um texto JSON em um objeto JSON, utilizamos a funo


eval(), que invoca o compilador javascript, que ir converter o texto e
criar a estrutura de um objeto:

Voc pode trabalhar com JSON e diversas linguagens, inclusive java!


Os cdigos js do post voc pode fazer o download aqui

Concluso
Esta foi uma rpida introduo de como representar um objeto JSON.
Para maiores detalhes, visite: http://www.json.org/

JSON - Introduo e conceitos bsicos

Neste artigo eu vou apresentar o JavaScript Object Notation (ou


JSON), um formato de intercmbio de dados abertos e baseado em
texto que fornece um formato de troca de dados padronizado mais
adequado para aplicaes baseadas em Ajax.
Obs: Assim como XML, JSON tambm pode ser visto uma
alternativa ao modelo de dados relacional mais apropriadamente
a dados semiestruturados.
Mas o que JSON tem a ver com a plataforma .NET, com VB .NET, C# e
ASP .NET ?
Tudo !!
Quando voc cria uma aplicao que ir se comunicar com outra
aplicao, quer seja ela local ou remota, voc esta trocando
informaes e neste caso um formato de dados e um protocolo de
troca deve ser selecionado para que a comunicao seja feita com
sucesso. Por sucesso entende-se que quem recebe a informao
consegue trat-la e entender o seu significado.
Existem uma variedade de opes de protocolos abertos
padronizados, tais como SOAP, XML, etc., que podem ser adotados e
isso vai depender da finalidade e dos requisitos da sua aplicao.
Dessa forma, JSON um protocolo leve para intercmbio de dados e
est baseado em um subconjunto da linguagem de
programao JavaScript, sendo independente desta e de qualquer
linguagem.
JSON lembra XML :
JSON texto simples
JSON "auto-descritivo" (legvel)
JSON hierrquico (valores dentro de valores)
JSON pode ser analisado pelo JavaScript
JSON os dados podem ser transportadas usando AJAX
mas diferente da XML:
No utiliza a tag de fechamento

mais curto e simples


mais rpido de ler e escrever
Pode ser analisado usando a funo eval() do JavaScript
Utiliza matrizes
No possui palavras reservadas
Possui parser nas principais linguagens e navegadores
Assim, JSON menor do que XML, mais rpido e mais fcil de
analisar.
O motivo principal para usar JSON que em aplicaes web com
AJAX, JSON muito mais rpido e fcil de usar do que XML.
A sintaxe JSON um subconjunto da linguagem JavaScript (sendo
independente desta repito).
As principais regras de sintaxe JSON so:
Dados JSON esto definidos aos pares no formato: nome :
valor
Os dados so separados por vrgulas(,)
As chaves {} contm objetos
Os colchetes [] expressam matrizes/vetores
Basicamente o JSON se baseia na notao NOME : VALOR,
onde NOME pode ser o nome que voc deseja usar para identificar
um objeto e VALOR o valor deste objeto.
A sintaxe JSON usa o par NOME : VALOR onde nome definido entre
aspas, seguido por dois pontos, seguido por um valor: Ex: "nome" :
"Macoratti" , "font-size" : "14px;"
Em JSON os valores usados podem ser:

Um nmero (inteiro ou ponto flutuante)


Uma string (entre aspas)

Um booleano (verdadeiro ou falso)


Uma matriz (entre colchetes[])
Um objeto (entre chaves {})
nulo
Os objetos JSON so definidos entre chaves {} e podem conter mltiplos pares
nome:valor:

Ex:
var pessoa = { "nome" : "Jose Carlos" , "sobrenome" : "Macoratti" };
var produto = {"ProdutoID":1, "Descricao":"Notebook 14",
"ProdutoNumero":"PRD-5381"};
Os arrays em JSON so definidos entre colchetes [] e podem conter mltiplos
objetos:

Ex1: var cores = [ "Azul" , "Branco", "Vermelho", "Amarelo" ];


Podemos acessar os dados usando a seguinte sintaxe:

<Script Language="JavaScript">
var cores = [ "Azul" , "Branco", "Vermelho", "Amarelo" ];
for (i=0; i<4; i++){
document.write( cores[i]+ "<br>" );
}
</Script>
Ex2:
var escola =
{
"alunos": [ { "nome":"Jose Carlos" ,
"sobrenome":"Macoratti" }, { "nome":"Ana" , "sobrenome":"Lima" },
{ "nome":"Pedro" , "sobrenome":"Ramos" } ]
}
Neste exemplo temos um objeto alunos definido como um array contendo 3
objetos . Cada objeto possui nome e sobrenome.
A primeira entrada no objeto array pode ser acessada da seguinte forma:

alunos[0].nome; => retona Jose Carlos


Para alterar um valor usamos a seguinte sintaxe:

alunos[0].nome = "Teste";
Vejamos a seguir a definio de uma estrutura de dados mais complexa
usando JSON:

var agenda =
{
"nome": "Jose Carlos",
"sobrenome": "Macoratti",
"idade": 45,
"endereco": {
"endereco": "Rua Projetada, 200",
"cidade": "Santos",
"estado": "SP",
"cep": 11054058
},
"telefone": [
{
"tipo": "fixo",
"numero": "212 555-1234"
},
{
"tipo": "celular",
"numero": "646 555-4567"
}
]
}
O exemplo mostra a representao JSON de um objeto que descreve
uma pessoa. O objeto tem campos string para o nome e sobrenome,
um campo nmero para a idade, contm um objeto que representa o
endereo da pessoa, e contm uma lista (uma matriz) de objetos para
os nmeros de telefone.
No exemplo acima onde temos a varivel agenda contendo os dados
JSON, podemos usar a funo eval() para criar o objeto contato
JavaScript da seguinte forma: var contato = eval("(" + agenda + ")");
Obs: a varivel agenda precisa estar envolvida em parnteses para
evitar ambiguidade com a sintaxe JavaScript.
A funo JavaScript eval() pode ser usada para converter um texto
JSON em um texto JavaScript pois a funo eval() usa o compilador

JavaScript que ir analisar o texto JSON e um produzir um objeto


JavaScript. Para evitar um erro de sintaxe o texto precisa ser
envolvido por parnteses.
Abaixo um exemplo de utilizao da funo eval() onde criamos um
objeto JavaScript a partir de um array JSON e exibimos o segundo
objeto do array:
<!DOCTYPE html>
<html>
<body>
<h2>Cria um Objeto a partir de uma string
JSON</h2>
<p>
Nome: <span id="nome"></span><br>
Sobrenome: <span
id="sobrenome"></span><br>
</p>
<script>
var txt = '{"funcionarios":[' +
'{"nome":"Jose
Carlos","sobrenome":"Macoratti" },' +
'{"nome":"Janice","sobrenome":"Rachel" },'
+
'{"nome":"Jefferson","sobrenome":"Andre"
}]}';
var obj = eval ("(" + txt + ")");
document.getElementById("nome").innerHT
ML=obj.funcionarios[1].nome
document.getElementById("sobrenome").inn
erHTML=obj.funcionarios[1].sobrenome
</script>
</body>
</html>

Como a funo eval() pode compilar e executar qualquer JavaScript


isso representa um potencial problema de segurana.Por isso mais
seguro usar um parser JSON para converter um texto JSON para um
objeto JavaScript.
Um parser ou analisador JSON ir reconhecer apenas o texto JSON e
no vai compilar os scripts.Em navegadores que oferecem suporte
nativo a JSON, os parsers JSON tambm so mais rpidos. O apoio ao
JSON nativo est includo nos navegadores mais novos e no mais novo
padro ECMAScript (JavaScript).
Atualmente navegadores como o Firefox e Internet Explorer incluem
caractersticas especiais para analisar (parsers) JSON, sendo esse
suporte ao navegador nativo mais eficiente e seguro do que o usar o
recurso eval() do JavaScript.

Na continuao deste artigo vou mostrar como usar JSON com ASP .NET
: ASP .NET - Usando JSON para trocar informaes entre um servio
WCF e um Web site Ajax

Introduo ao JSON

Comunicao entre aplicaes, plataformas e linguagens hoje em dia algo


muito comum na rea de TI.
Em uma empresa temos o software da secretaria que feito em Delphi
(legado). O site da empresa feito em PHP e os novos sistemas esto sendo
feitos em Java e Python, alm de um outro sistema que deve ser feito em Lua
por conta da plataforma. E no final de tudo todos eles precisam falar a mesma
lngua, mas como?
Trafegar dados a maneira que podemos fazer para que sistemas se
comuniquem e transpaream falar a mesma lngua sem ter que cadastrar tudo
de novo (ningum faz isso).
Uma tecnologia que usavamos pra fazer isso (e ainda usamos) a Extensible
Markup Language ou mais conhecida por todos como XML. Com ela podemos
trafegar informaes de um lado pro outro utilizando padres, padres esses
que determinam como escrever e ler dados.
Aqui est um exemplo de um arquivo XML.

?
<produtos>
<produto>
<nome>Livro</nome>
<preco>12</preco>
</produto>
<produto>
<nome>Ventilador</nome>
<preco>23</preco>
</produto>
<produto>
<nome>Bolsa</nome>
<preco>123</preco>
</produto>
</produtos>

Basicamente o XML trabalha com tags onde uma tag pode (ou no) ter um
contedo ou simplesmente ter outras tags dentro dela.

O XML originou muitas linguagens pelo seu padro tais como XHTML (Web)
e NCL (TV Digital).
Conhecida como linguagem de marcao ou descrio de contedo o XML
vem sendo usado desde arquivos de configurao de frameworks
(hibernate, struts e etc) at a comunicao de sistemas utilizando esse
formato.
Mas, como nem tudo sobrevive por muito tempo na tecnologia. Eis que
surge uma tecnologia similar ao XML mas, que tem algumas vantagens: seu
nome JSON.
JSON um formato mais leve para trfego de dados, sua origem vem do
JavaScript, tanto que JSON significa: JavaScript Object Notation. O seu uso
surge da necessidade de trfegar o mnimo de informao em requisies
AJAX.
O mesmo arquivo escrito acima em XML seria descrito em um arquivo JSON
(.json) da seguinte forma:

?
{ "produtos" : [
{"nome":"Sapato","preco":278},
{"nome":"Bolsa","preco":120},
{"nome":"Ventilador","preco":75}
]
}

Nota-se que o arquivo JSON tem menos bytes, isso muito pela economia das
tags do xml (<itens></itens>), isso bem notrio quando precisamos
trafegar milhares de registros de um lado pro outro (Servidor > Cliente |
Cliente > Servidor).
Apesar de ter surgido do JavaScript, JSON pode ser usado em grande partes
das linguagens de programao como Java, PHP, Delphi, Lua, Python e etc.
Suas APIs prontas so bem mais simples de utilizar comparada as APIs de
XML que conhecemos hoje.
Vamos ver um exemplo onde ocorre o parser (converso) de um arquivo
JSON e de um XML em objetos JavaScript apenas para que fique mais claro o
exemplo.

Parser de um arquivo XML:


Construmos uma funo para carregar o arquivo XML:
?

function xmlLoader(url){

var Loader = new XMLHttpRequest();


Loader.open("GET", url ,false);
Loader.send(null);
return Loader.responseXML;
}

Precisamos de uma funo para trabalhar com Objetos em JavaScript onde a


mesma um construtor:
?
function produto(nome,preco){
/* determina os valores da propriedade do objeto*/
this.nome = nome;
this.preco = preco;
}

Ento, finalmente construmos a funo para fazer o Parser do arquivo XML


para Objetos recebendo como argumento um arquivo XML (xmlNode):
?
function loadObjetcs(xmlNode){

var produtos=new Array();


var tamanho = xmlNode.getElementsByTagName("produtos").length;

for(var i=0;i<3;i++){

var myProduct = new produto("","");

myProduct.nome = xmlNode.getElementsByTagName("nome")
[i].childNodes[0].nodeValue;
myProduct.preco = xmlNode.getElementsByTagName("preco")
[i].childNodes[0].nodeValue;

produtos[i] = myProduct;

return produtos;
}

Para escrevermos os objetos do arquivo XML, teriamos o seguinte cdigo:


?
xml = xmlLoader("produtos.xml"); //carrega o xml

var obj = loadObjetcs(xml); //trasforma em um Array de Objetos produto

//Escreve dados do objeto


document.write(obj[0].nome);
document.write(obj[0].preco);
document.write("<br>");
document.write(obj[1].nome);
document.write(obj[1].preco);
document.write("<br>");
document.write(obj[2].nome);
document.write(obj[2].preco);

Nos deu um certo trabalho construirmos a funo xmlLoader(), pois


necessrio ler tag por tag do arquivo e nos daria muito mais trabalho
(acredite) se nesse arquivo houvesse mais tags filhas.

Parser de um arquivo JSON:


Para fazermos isso com JSON, teriamos que carregar o arquivo .json:

?
function jsonLoader(url){
var Loader = new XMLHttpRequest();
Loader.open("GET", url ,false);
Loader.send(null);

return Loader.response;
}

e a funo eval() do JavaScript j transformaria o Contedo JSON em


Objetos:

?
//Carrega os dados do arquivo JSON
var content = jsonLoader("produtos.json");

//Converte os dados em um Objeto JSON


var obj = eval("(" + content + ")");

//Escreve dados do objeto


document.write(obj.produtos[0].nome);
document.write(obj.produtos[0].preco);
document.write("<br>");
document.write(obj.produtos[1].nome);
document.write(obj.produtos[1].preco);
document.write("<br>");
document.write(obj.produtos[2].nome);
document.write(obj.produtos[2].preco);

Percebe a diferena? E mais, sempre que seja necessrio adicionar mais um


campo ou remover do arquivo JSON o cdigo de Parser continua o mesmo. J
em XML teramos que fazer algo bem mais elaborado para obtermos esse
comportamento.

Introduo a JSON e PHP (Webservices)

Hmm.. Ento voc ouviu sobre o tal do JSON e no sabe ainda como usar?
Talvez voc j tenha at visto algo que use JSON e no sabe

Desde a verso 5.2 o PHP j tem suporte a leitura e escrita de dados no formato
JSON Mas que raios isso?
Descrio de JSON da Wikipdia:
JSON (com a pronuncia djeisn), um [otation](http://pt.wikipedia.org/wiki/Nota
%C3%A7%C3%A3o)", um formato leve para intercmbio de dados
computacionais. JSON um subconjunto da notao de objeto de JavaScript,
mas seu uso no requer Javascript exclusivamente.
A simplicidade de JSON tem resultado em seu uso difundido, especialmente
como uma alternativa para [navegadores web]
(http://pt.wikipedia.org/wiki/Navegador_web) atuais. -- Trocando em midos:
um padro de formatao de dados que sero transmitidos entre duas aplicaes
de linguagens diferentes. Conhece o XML? Ento... O JSON serve pra mesma
coisa. ### ### Como ele funciona? Usando JSON voc salvar quatro tipos de
valores (variveis): inteiros, strings, booleanos e arrays. O JSON um grupo de
informaes/valores/variveis agrupados e organizados dentro de um objeto
(POO) de JavaScript que pode ser lido - facilmente - pela maioria das linguagens
hoje em dia: PHP, ActionScript, ASP, Java, Flex e por a vai.. ### A sintaxe do
dito cujo T nervoso? Quer ver logo como esse tal de "djeisn"? Vamos criar
um objeto que levaria algumas informaes aqui do blog. Primeiro criamos o
objeto sem nada dentro:
1

var meuBlog = {}

Agora colocamos alguns valores:


var meuBlog = {
titulo: 'Thiago Belem / Blog',
123 url: '/'
4 }

Caso voc queira exibir algum desses valores, usando JavaScript, poderia fazer:
1

alert("Titulo do blog: " + meuBlog.titulo);

Para incrementar, vamos colocar um array?


1234 var meuBlog = {
5 titulo: 'Thiago Belem / Blog',
url: '/',
assuntos: ['PHP', 'MySQL', 'jQuery', 'CakePHP', 'Desenvolvimento

WEB']
}

Lembra que eu disse que voc provavelmente j viu JSON em algum lugar? J
usou algum plugin de jQuery e precisou mudar as configuraes dele? D uma
olhada na sintaxe usada l e v esses ltimos exemplos. T... No JSON, mas
so os dois so idnticos por serem objetos JavaScript... A diferena que o
JSON feito para ser transmitido. :P . ### T... E o PHP nisso? Bom... Como eu
disse antes, o PHP 5.2+ tem suporte nativo a escrita e leitura de formatao
JSON... Isso significa que voc no precista instalar/ativar nada, s comear a
usar. Vejamos um exemplo de escrita:
<?php

$meuBlog = array(
'titulo' => 'Thiago Belem / Blog',
'url' => '/',
'assuntos' => array('PHP', 'MySQL', 'jQuery', 'CakePHP', 'Desenvol
1234567891011 );
12
$json = json_encode($meuBlog);

echo $json;
// Resultado: { titulo: 'Thiago Belem / Blog', url: '/', assuntos:
'Desenvolvimento WEB'] }

isso mesmo.. Primeiro voc cria um array com a formatao correta e todos os
valores que sero passados para JSON, depois s rodar a funo
json_enconde() no array todo e cabou-se. ;) Agora a leitura:
<?php
// Recebe uma string no formato JSON
$usuario = "{ nome: 'Fulano da Silva', ativo: true, nascimento:
'2009/05/12' }";

1234567
89 $meuUsuario = json_decode($usuario, true);

echo $meuUsuario['nome']; // Fulano da Silva


echo $meuUsuario['nascimento']; // 2009/05/12

No segundo argumento da funo json_decode() do PHP voc define se quer


(true) ou no (false) que o objeto JSON recebido seja convertido em array. Caso
no especifique o 2 argumento ou defina-o como falso, o objeto criado ser
outro objeto, s que agora do PHP. ### Webservice? Quem? Como? Quando? J
dizia a Wikipdia: "Web service uma soluo utilizada na integrao de
sistemas e na comunicao entre aplicaes diferentes." Mas perai... O JSON
no usado para formatar os dados que esto sendo compartilhados entre duas
aplicaes diferentes? Sim! Voc acaba de descobrir por que o JSON ideal
para webservices. :) Espero que tenham gostado desse pequeno artigo. Ahh.. E
pra quem no tem PHP 5.2 ou superior, no site (feio/medonho) do [JSON]

(http://www.json.org/), existem guias de integrao e classe pronta para uso (o


mesmo vale para outras linguagens que no tm suporte nativo a ele). Abraos! E
uma boa noite.

API do Java para processamento JSON: Introduo a JSON

A API do Java para processamento JSON fornece APIs portteis que permitem analisar, gerar,
transformar e consultar JSON.
JSON (JavaScript Object Notation) um formato leve para intercmbio de dados, baseado em texto e
independente da linguagem de programao, fcil de escrever e ler tanto para seres humanos como para
mquinas. JSON pode representar dois tipos estruturados:objetos e matrizes. Um objeto uma coleo
no ordenada de zero ou mais pares de nomes/valores. Uma matriz uma sequncia ordenada de zero
ou mais valores. Os valores podem ser strings, nmeros, booleanos, nulos e estes dois tipos
estruturados.
A Lista 1 um exemplo tomado da Wikipdia que mostra a representao JSON de um objeto
descrevendo uma pessoa. O objeto tem valores string para nome e sobrenome, um valor numrico para a
idade, um valor de objeto que representa o endereo da pessoa e um valor matriz de objetos de nmeros
telefnicos.
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
Lista 1. Exemplo de representao de um objeto em JSON
JSON frequentemente utilizado em aplicaes Ajax, configuraes, bancos de dados e servios web
RESTful. Todos os web sites populares oferecem JSON como formato para intercmbio de dados com
seus servios web RESTful.
Processamento JSON
A API do Java para processamento JSON (JSR 353) fornece APIs portteis que permitem analisar, gerar,
transformar e consultar JSON usando APIs de modelos de objetos e de streaming.
A API de modelos de objetos cria uma estrutura de rvore, de acesso aleatrio, representando os dados
JSON armazenados na memria. possvel percorrer a rvore e fazer consultas. Este modelo de
programao o mais flexvel e permite processamento em casos que requerem acesso aleatrio
totalidade do contedo da memria. No entanto, com frequncia no to eficiente como o modelo de
streaming e precisa de mais memria.
A API de streaming oferece um modo de anlise e gerao de JSON em streams. Oferece controle sobre
anlise e gerao ao programador. A API de streaming fornece um analisador baseado em eventos e
permite que um desenvolvedor de aplicaes possa requisitar o prximo evento em vez de ter que se
ocupar do evento em um retorno de requisio. Assim, o desenvolvedor tem maior controle procedimental
do processamento JSON. O cdigo de aplicao pode processar ou descartar o evento do analisador e

requisitar o prximo evento (puxar o evento). O modelo de streaming adequado para o processamento
local quando no se requer acesso aleatrio a outras pores da informao. De maneira similar, a API de
streaming permite gerar JSON bem formado em stream, escrevendo um evento de cada vez.
A API de modelos de objetos
A API de modelos de objetos semelhante API de modelos de objetos de documento (DOM) para XML.
uma API de alto nvel que fornece modelos de objetos imutveis para estruturas de objetos e matrizes
JSON. Estas estruturas JSON so representadas como modelos de objetos usando os tipos do
Java JsonObject e JsonArray. Na Tabela 1 so includas as classes e interfaces principais da API de
modelos de objetos.
JsonObject oferece uma vista Map para acessar a coleo no ordenada de zero ou mais pares de
nomes/valores do modelo. De maneira similar, JsonArray oferece uma vista List para acessar a sequncia
ordenada de zero ou mais valores do modelo.
Tabela 1. Classes principais da API de modelos de objetos
Descrio

Classe ou
interface
Json

Contm mtodos estticos para criar leitores, escritores, construtores de JSON e


seus objetos de fbrica.

JsonGenerator

Escreve dados JSON em forma de stream, com um valor de cada vez.

JsonReader

L dados JSON de um stream e cria um modelo de objeto na memria.

JsonObjectBuilder Criam um modelo de objeto ou um modelo de matriz na memria, adicionando


JsonArrayBuilder valores do cdigo de aplicao.
JsonWriter

Escreve um modelo de objeto da memria em um stream.

JsonValue
JsonObject
JsonArray
JsonString
JsonNumber

Representam tipos de dados para valores em dados JSON.

JsonObject, JsonArray, JsonString e JsonNumber so subtipos de JsonValue. H constantes definidas na


API para valores JSON nulos, verdadeiros e falsos.
A API de modelos de objetos usa padres geradores para criar estes modelos de objetos de zero. O
cdigo de aplicao pode usar a interface JsonObjectBuilder para criar modelos representando objetos
JSON. O modelo obtido do tipo JsonObject. O cdigo de aplicao pode usar a interface
JsonArrayBuilder para criar modelos representando matrizes JSON. O modelo obtido do tipo JsonArray.
Estes modelos de objetos tambm podem ser criados a partir de uma origem de entrada (por exemplo,
InputStream ou Reader) usando a interface JsonReader. De maneira similar, os modelos de objetos
podem ser escritos em uma origem de sada (por exemplo, OutputStream ou Writer) usando a classe
JsonWriter.
Por exemplo, vamos escrever cdigo para realizar uma pesquisa em postagens pblicas do Facebook
usando a API de modelos de objetos. A API do Facebook retorna os resultados da pesquisa no formato
JSON, mostrado na Lista 2.
{
"data" : [
{ "from" : {
{ "from" : {
...
],
...
}

"name" : "xxx", ... }, "message" :


"name" : "ppp", ... }, "message" :

"yyy", ... },
"qqq", ... },

Lista 2. Representao JSON de uma pesquisa em postagens pblicas no Facebook


Podemos usar a API de modelos de objetos para obter nomes e suas postagens pblicas relacionadas
com o termo java. Na Lista 3, as linhas 1 a 3 criam JsonReader; a linha 5 cria JsonObject com os
resultados; a linha 7 volta sobre cada resultado; e as linhas 8 a 11 obtm o nome da pessoa que postou e
a postagem, e imprimem. Note-se que JsonReader e outros objetos desta API podem ser usados na
instruo try-with-resources (tambm chamada de gerenciamento automtico de recursos [ARM]).
URL url = new URL("https://graph.facebook.com/search?q=java&type=post");
try (InputStream is = url.openStream();
JsonReader rdr = Json.createReader(is)) {
JsonObject obj = rdr.readObject();
JsonArray results = obj.getJsonArray("data");
for (JsonObject result : results.getValuesAs(JsonObject.class)) {
System.out.print(result.getJsonObject("from").getString("name"));
System.out.print(": ");
System.out.println(result.getString("message", ""));
System.out.println("-----------");
}
}
Lista 3. Processamento das postagens no Facebook com a API de modelos de objetos

A API de streaming
A API de streaming semelhante API de streaming para XML (StAX) e constituda pelas
interfaces JsonParser e JsonGenerator. JsonParser contm mtodos para analisar dados JSON usando o
modelo de streaming. JsonGenerator contm mtodos para escrever dados JSON em uma origem de
sada. Na Tabela 2 so includas as classes e interfaces principais da API de streaming.
Tabela 2. Classes principais da API de streaming
Classe ou
interface

Descrio

Json

Contm mtodos estticos para criar analisadores e geradores JSON, e seus


objetos de fbrica.

JsonParser

Representa um analisador baseado em eventos que pode ler dados JSON em um


stream.

JsonGenerator

Escreve dados JSON em forma de stream, com um valor de cada vez.

JsonParser fornece acesso direto de somente leitura a dados JSON, usando o modelo de programao
com anlise pull. Neste modelo, o cdigo de aplicao controla o subprocesso e requisita mtodos na
interface do analisador para faz-lo avanar ou obter dados JSON do estado atual do analisador.
JsonGenerator fornece mtodos para escrever dados JSON em um stream. O gerador pode ser usado
para escrever pares de nomes/valores em objetos JSON e valores em matrizes JSON.
A API de streaming uma API de baixo nvel, projetada para processar grandes quantidades de dados
JSON de maneira eficiente. Outras estruturas JSON (por exemplo, ligaes JSON) podem ser
implementadas usando esta API.
A seguir, vamos usar a API de streaming com o mesmo fim que usamos a API de modelos de objetos, isto
, vamos fazer uma pesquisa de postagens pblicas no Facebook sobre java. Na Lista 4, as linhas 1 a 3
criam um analisador de streaming; as linhas 4 a 5 obtm o prximo evento; a linha 6 procura o evento
KEY_NAME; as linhas 8 a 11 leem os nomes e imprimem; e as linhas 14 a 16 leem as postagens pblicas
e imprimem. O uso da API de streaming um modo eficiente de acessar nomes e suas postagens
pblicas se comparado com o uso da API de modelos de objetos para realizar o mesmo trabalho.
URL url = new URL("https://graph.facebook.com/search?q=java&type=post");
try (InputStream is = url.openStream();
JsonParser parser = Json.createParser(is)) {

while (parser.hasNext()) {
Event e = parser.next();
if (e == Event.KEY_NAME) {
switch (parser.getString()) {
case "name":
parser.next();
System.out.print(parser.getString());
System.out.print(": ");
break;
case "message":
parser.next();
System.out.println(parser.getString());
System.out.println("---------");
break;
}
}
}
}
Lista 4. Processamento das postagens no Facebook com a API de streaming
Concluso
A API do Java para processamento JSON oferece as seguintes capacidades:

Analisa streams de entrada em objetos imutveis ou streams de eventos

Escreve streams de eventos ou objetos imutveis como streams de sada

Navega mediante programao objetos imutveis

Constri de maneira programada objetos imutveis com geradores

A API serve como base para o desenvolvimento de APIs de transformao, pesquisa, ligao ou outras
manipulaes de dados. JAX-RS 2.0 oferece integrao nativa para a API do Java para processamento
JSON.
Informaes adicionais
The JSON Processing specification (Especificao de processamento JSON)
The JSON Processing tutorial (Tutorial sobre processamento JSON)
The JSON Processing reference implementation (Implementao de referncias a
processamento JSON)

You might also like