JSON (Notação de Objetos JavaScript) e um formato de dados permutável. Ele assemelha - se próximo a um sub tipo da sintaxe do JavaScript, mas ele não é um tipo de script. (Veja JSON em Referências JavaScript para todos os detalhes). Isto é útil quando escrevemos qualquer tipo de aplicação baseada em JavaScript, incluindo web sites e extensões de navegadores. Por exemplo, você pode armazenar informações no formato em JSON no formato de cookies, ou você pode armazenar as preferências de extensões em JSON como valor de texto nas preferências do navegador.
JSON e capaz de representar números, booleanos, textos, vazios, e listas (sequência ordenada de valores) e objetos (mapeamento de valores de texto) composto por estes valores (ou por outras listas e objetos). Ele não representa nativamente tipos complexos de dados como funções, expressões regulares, datas, e muito mais. (Objetos de dados por padrão inicializam como texto contendo os dados no formato ISO, enquanto eles não mudam, a informação não é completamente perdida.) Se você precisa preservar muitos valores, você pode transformar valores como eles são inicializados, ou prioritariamente descontinuados, para habilitar JSON para representar tipos de dados adicionais.
Documentação
|
Comunidade
FerramentasTopicos Relacionados |
Usando JSON atráves de objetos JavaScript JSON
O mais simples, fácil caminho para usar JSON e através do padrão de objetos JSON em JavaScript. Use JSON.stringify para inicializar valores em JSON, e use JSON.parse para deserializar um valor JSON.
Por exemplo, para inicializar um objeto JavaScript, use o método JSON.stringify():
var foo = {}; foo.bar = "new property"; foo.baz = 3; var JSONfoo = JSON.stringify(foo);
JSONfoo
now holds {"bar":"new property","baz":3}
. Para fazer JSONfoo voltar a ser um objeto JavaScript faça:
var backToJS = JSON.parse(JSONfoo);
Para mais informações, veja a documentação de objetos JSON.
Método toJSON()
Se um objeto define o método toJSON(), JSON.stringify pode se chamar estes métodos para determinar a representação de objetos JSON. Por exemplo:
x = {}; x.foo = "foo"; x.toJSON = function() { return "bar"; }; var json1 = JSON.stringify(x);
json1
now contains '"bar"'.
Limitações
Você não pode inicializar objetos que sejam membros escolhidos para funções. As especificações JSON não permitem. Por exemplo:
foo.qwerty = function(){alert('foobar');}; foo.qwerty() var JSONfoo = JSON.toString(foo);
will raise a TypeError on line XXX: No JSON representation for this object!
Usando JSON através do nsIJSON
Versões do Firefox anteriores a 3.5 nativamente não suportam JSON, e há um único caminho para acessar as funcionalidades JSON é através do componente nsIJSON, implementado
desde o Firefox 3. Codificando e decodificando são executados através nsIJON's métodos de codificação e decodificação. Estes métodos não acessam o JSON através de objetos JSON, e eles somente suportam valores escolhidos por listas de objetos, sem textos, booleanos, números ou vazios. (Estes valores são suportados somente por listas e objetos: o simples número 5 não irá funcionar, mas o objeto {"valor": 5} funcionará.)
Por causa nsIJSON não ser tão eficaz como um objeto JSON, ele codifica e decodifica métodos já removidos para Firefox 7. Desenvolvedores devem escolher para uso objeto JSON.
O seguinte código inicializa um objeto JavaScript usando nsIJSON
:
var Ci = Components.interfaces; var Cc = Components.classes; var foo = {}; foo.bar = "new property"; foo.baz = 3; var nativeJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); var JSONfoo = nativeJSON.encode(foo);
The JSONfoo
variable now holds the string {"bar":"new property","baz":3}
. To create an object corresponding to JSONfoo
, just do:
var backToJS = nativeJSON.decode(JSONfoo);
Usando JSON em outras situações
Enquanto na teoria e possível usar JSON usando eval (mas somente para descerializar objetos, e não para inicializar textos) ou usando json2.js, Está não é uma boa ideia. Isto não e seguro para analisar JSON usando eval por que ele permite muito mais sintaxe que JSON faz (Melhora para execução de um código aleatório). Como para json2.js, este problema e que ele adiciona métodos para compilação como Object.prototype, escolha o mais útil para parar a execução do código antecipando está possibilidade.
Você deve quase sempre usa - lo ou os métodos formulados para usar JSON em preferências para qualquer outro caminho.