O que é JSON

{ November 4th, 2007 }


cmilfont

Autor: cmilfont

A especifica√ß√£o do “ECMA Script” (ECMA262, 3rd Edition, December 1999), que formaliza o Javascript, define na p√°gina 2 (4.2) a senten√ßa:

“An ECMAScript object is an unordered collection of properties each with zero or more attributes…”

Essa definição é o que chamamos de objeto literal, uma coleção não ordenada de propriedades com um ou mais elementos, onde esses elementos podem ser valores primitivos comuns a todas as linguagens como: inteiro, string ou char; ou outros objetos.

var Produto = {
	nome:"Microprocessador AMD Turion 64",
	value:150,
	custo:50,
	getValue:function(){
		return (value + custo)
	}
}

Douglas Crockford, prop√īs um formato de troca de dados simples com base no objeto literal do JavaScript, que denominou de JSON (JavaScript Object Notation). Esse mecanismo simples √© um subconjunto do objeto literal e √© facil de qualquer linguagem processar e gerar por ser baseado no formato texto, como linguagem completamente independente que usa conceitos similares √†s linguagens C-like. Esses motivos tornam o JSON o formato ideal de troca de dados.

JSON √© constru√≠do com base em uma cole√ß√£o de pares chave/valor (que definem as propriedades e seus valores), iniciado com “{” (chave aberta) e finalizado com “}” (chave fechada) . Cada chave √© seguida de “:” (dois pontos) e os pares s√£o separados por “,” (v√≠rgula).

objeto json

var Contato = {
	"nome":"Christiano Milfont",
	"email":"cmilfont@gmail.com",
	"anivers√°rio":"28/12/1977"
}

Um array pode ser usado como valor para uma chave, iniciado por “[” (colchete aberto) e finalizado por “]” (colchete fechado). Cada valor do array √© separado por “,” (v√≠rgula).

array json

var Contato = {
	"nome":"Christiano Milfont",
	"telefones":[
		'91942365',
		'88293759'
	]
}

Um valor pode ser uma String em aspas duplas (em javascript o valor pode ser aspa simples, √© prefer√≠vel que o parser resolva as duas formas, apesar de que em linguagens como java as aspas simples representam um char), ou um n√ļmero, ou um booleano, ou um null, ou um outro objeto ou um array.

valores json

No caso do objeto e do array, essas estrutura podem ser aninhadas.

var Contato = {
	"nome":"Christiano Milfont",
	"endereco":{
		"rua":"Eurico Medina",
		"numero":185,
		"mapa":{
			"latitude":"",
			"longitude":""
		}
	},
	"telefones":[
		'91942365',
		'88293759'
	]
}

String √© uma cole√ß√£o de zero ou mais caracteres Unicode, onde a barra invertida pode ser usada para passar caracteres especais como quebra de linha, tab, entre outros. N√ļmeros podem ser inteiros ou reais, menos hexadecimal ou octal.

Existem códigos de processamento JSON prontos em dezenas de linguagens, praticamente em todas as linguagens modernas voce encontra no site do projeto.

A vantagem do JSON sobre o XML como formato de troca de dados é a diminuição do tamanho da resposta, facilidade de entendimento para o programador (já que o código é similiar a linguagem que você usa), e principalmente, no caso de javascript, o parser facilitado porque é baseado em sua especificação de objeto.

Código de retorno do Flickr em XML e JSON respectivamente:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<s:Envelope xmlns:s=”http://www.w3.org/2003/05/soap-envelope”>
<s:Body>
<FlickrResponse xmlns=”http://flickr.com/ns/api#”>
<method>flickr.test.echo</method>
<format>soap2</format>
<foo>bar</foo>
<api_key>08d9221b2468be6ccfe5bc229db50181</api_key>
</FlickrResponse>
</s:Body>
</s:Envelope>

 
jsonFlickrApi({
	"method":{
		"_content":"flickr.test.echo"
	},
	"format":{
		"_content":"json"
	},
	"api_key":{
		"_content":"08d9221b2468be6ccfe5bc229db50181"
	},
	"stat":"ok"
})

Dessa forma voc√™ pode usar as estrat√©gias de “Eval” ou “Scripttag” para processar o JSON de forma transparente em sua aplica√ß√£o AJAX. Usado como configura√ß√£o em aplica√ß√Ķes no lado servidor, voc√™ pode construir uma arquitetura com base em interfaces para validar os dados, assim como validaria usando schemas no XML.

A maioria das APIs de web services dos principais Players no mercado WEB, passaram a oferecer o JSON como alternativa ao XML pela facilidade de interpretação para a arquitetura REST. Yahoo e Google são os principais expoentes desse mecanismo.

Categories: JavaScript, JSON, Web Development ~ ~ Trackback


Assine os coment√°rios deste artigo.


5 Responses to “O que √© JSON”

  1. 1
    Rafael Carneiro

    Excelente introdução ao JSON! Para quem estiver iniciando nessa tecnologia, eis aqui o ponto de partida.

  2. 2
    Rafael Ponte

    O mais bacana do JSON √© o parser para JavaScript, isso √© √≥timo quando se trabalha com aplica√ß√Ķes AJAX :)) E claro, o menor n√ļmero de dados trafegando na rede, em alguns casos acaba sendo um ganho absurdo de performance.

    √ďtimo post Milfont, parab√©ns.

  3. 3
    JSONRequest para evitar o “Eval” - CMilfont Tech

    […] artigo passado, vimos a proposta de Douglas Crockford, denominado de JSON (JavaScript Object Notation) para a […]

  4. 4
    Resumo javascript - Jan 2008 - CMilfont Tech

    […] http://www.milfont.org/tech/2007/11/04/o-que-e-json/ […]

  5. 5
    Introdução ao Ext - CMilfont Tech

    […] e BOM [Browser Object Model], tratamento de eventos, anima√ß√Ķes como Fade In e Fade Out, parser de JSON, entre outras coisas. Seus componentes s√£o constru√≠dos com t√©cnicas modernas de orienta√ß√£o a […]

Leave a Reply