JavaScript Object Notation

A pedidos, resolvi escrever este artigo sobre JSON, que eu havia “pulado”… Como não há muito para ser explicado, segui a mesma linha do site oficial.

O JSON é um subconjunto da notação de objeto do JavaScript. Sendo o JSON um subconjunto do JavaScript, ele pode ser usado sem nenhum problema, ou seja, é só colocar lá que roda (simplificação péssima…). Veja um exemplo simples:

var JSONObject = {"bindings": [
	{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
	{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
	{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random//.*"}
  ]
};

Criamos um objeto contendo um membro bindings, que contém um array contendo 3 objetos, cada um contendo os membros ircEvent, method e regex. Se você analisar, é quase a mesma coisa que criar uma classe através de um construtor, e depois instancia-la em uma variável, criando um objeto. É quase tudo igual.

Para acessar os membros de um objeto, usamos o “dot-structure”, como para acessar atributos de objetos normais (viu como é parecido? Até o nome), assim:

JSONObject.bindings[0].method;	// "newURI"

Texto JSON (demorei pra entender pelo site) é um objeto JSON normal, mas em uma string, ou seja, tudo entre aspas. Você já deve ter visto isso em Ajax nos meus posts anteriores. Para transforma-lo em um objeto, usamos a função eval(), assim:

var myObject = eval( '(' + JSONText + ')' );

De acordo com o site, não há problema algum utilizar a função eval() quando nós mesmos provemos o texto. Mas se por acaso o objeto seja provido de outra forma (pelo usuário, por exemplo), há um pequeno risco de segurança. Para contornar o problema, você encontra um conversor no site.

Não esqueça de verificar se o seu JSON é “válido”. Não há validação para isto, e também não causa nenhum problema caso nada seja validado. Mas o bom senso é quem manda. Para ficar tudo certo, use JSON Válido, com aspas duplas no nome dos membros.

Posts Relacionados

Postado em novembro 27, 2006 às 21:26

Comentários

  1. Cau Guanabara

    Fala Julio, muito bom você puxar esse assunto, o JSON é muito útil e a versão mais recente do PHP (5.2.0) já inclui funções para (de)codificar JSON.
    Mas cara, JSON é string….
    var a = {}; // object
    é exatamente o mesmo que (um atalho para):
    var a = new Object(); // object
    var a = ‘{}’; // eu acho que apenas esse é JSON…
    ——-
    Há uns meses postei esse script no phpbrasil, para converter variaveis PHP para JSON e vice-versa, acho que pode interessar: http://phpbrasil.com/scripts/script.php/id/3206
    Abraço, Cau


  2. Ramon

    muito bom, agora é só dar uma treinada…

    abracos


  3. JulioGreff

    Na verdade, JSON não é string. Podemos tornar strings JSON em objetos JSON. Se bem que JSON pode ser os dois. JSON é JSON, né… (usei 6 JSON, opa 7, credo!)


Deixe seu comentário