JSON
Extensão | .json |
---|---|
Tipo MIME | application/json |
PUID | fmt / 817 |
Desenvolvido por | Douglas Crockford |
Versão inicial | 2002 |
Tipo de formato | Texto |
Baseado em | Javascript |
Padrão | RFC-8259 e ECMA-404 |
Especificação | Formato aberto |
Local na rede Internet | json.org/json-fr.html |
JavaScript Object Notation (JSON) é umformato de dadostextual derivado da notação deobjetodalinguagemJavaScript. Ele permite que você represente informações estruturadas como oXML permite,por exemplo. criado porDouglas Crockfordentre 2002 e 2005, o primeiro padrão JSON é o ECMA-404, que foi publicado em outubro de 2003, e atualmente é descrito pelos dois padrões concorrentes:RFC 8259 daIETFe ECMA 404 daECMA.
A versão mais recente das especificações de formato é dezembro de 2017.
Bibliotecas para o formato JSON existem na maioria das linguagens de programação.
Um documento JSON consiste em dois tipos de elementos estruturais:
Esses mesmos elementos representam três tipos de dados:
Exemplo de dados no formato JSON:
{ "menu": { "id": "file", "value": "File", "popup": { "menuitem": [ { "value": "New", "onclick": "CreateNewDoc()" }, { "value": "Open", "onclick": "OpenDoc()" }, { "value": "Close", "onclick": "CloseDoc()" } ] } } }Equivalente ao formato XML :
<menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()"/> <menuitem value="Open" onclick="OpenDoc()"/> <menuitem value="Close" onclick="CloseDoc()"/> </popup> </menu>Equivalente ao formato YAML :
menu: id: file value: File popup: menuitem: - value: New onclick: CreateNewDoc() - value: Open onclick: OpenDoc() - value: Close onclick: CloseDoc()Os seis tipos básicos de formato JSON são:
Por definição, JSON é um formato de intercâmbio de dados . Portanto, a RFC não admite comentários (que são, por natureza, metadados ( metadados) ). Os analisadores JSON estrito geram uma exceção quando encontram um caractere inesperado pela especificação (a partir /de //ou /*apenas iniciando comentários de JavaScript).
Existem iniciativas de formato que sobrecarregam JSON para permitir a adição de comentários (como Hjson for Human JSON em inglês) e software que torna possível renderizar, a partir desses formatos derivados, JSON em formato puro e estrito. No entanto, como esses arquivos exigem uma etapa adicional antes de serem lidos por um interpretador JSON padrão, eles perdem um pouco a facilidade de interoperabilidade .
Sempre podemos adicionar uma propriedade do objeto representado pelo JSON, chamá-la de "_comment" (um uso expansível) e colocar um texto (o comentário) no campo de valor:
{ "_comment": "Imported from Wikidata 2015-05-27 10:13.", "QID": "Q5502001", "label": "Adèle", "description": "late 18th century, early 19th century French brig" }Durante o desenvolvimento do formato, David Crockford notado que alguns dos primeiros usuários do JSON adicionados comentários a fim de dar directivas para o analisador, como instruções #ifdefou #defineo pré-processador C . Ele os vê como um perigo para a interoperabilidade, uma prioridade do formato, e decide retirá-los. Em 2012, ele explicou sua escolha e reconheceu estar ciente da tristeza dos usuários por não poderem comentar sobre esses arquivos.
Esses tipos de dados são suficientemente genéricos e abstratos para, por um lado, poderem ser representados em qualquer linguagem de programação e, por outro lado, ser capazes de representar quaisquer dados concretos.
A principal vantagem do JSON é que ele é fácil de implementar por um desenvolvedor e ainda é abrangente.
Benefícios:
JSON pode representar apenas alguns tipos gerais e não é possível adicionar mais. Para datas ou cores, por exemplo, devemos encontrar representações na forma de cadeias de caracteres. Essa é a principal diferença de uma linguagem como o XML , onde os dados são digitados e extensíveis, ao custo de uma complexidade maior.
Essa digitação fraca enfraquece a segurança e a confiabilidade do idioma; por exemplo, não há limite fixo para valores inteiros, depende do interpretador.
De um ponto de vista mais prático, não pode haver comentários, o que é irritante ao usar arquivos JSON em uma configuração. Algumas bibliotecas aceitam comentários em formato JavaScript.
[não neutro]Embora use a notação JavaScript , JSON é independente da linguagem de programação (várias dezenas de linguagens de programação integraram JSON). JSON é usado para comunicar aplicativos em um ambiente heterogêneo. É usado principalmente como linguagem de transporte de dados por AJAX e serviços da Web . Outras soluções são possíveis, como XML . O tipo MIME application / json é usado para transmiti-lo pelo protocolo HTTP .
Com relação ao JavaScript, um documento JSON representa um objeto, daí seu nome. Portanto, é potencialmente mais fácil de interpretar do que XML, que exigirá o uso de técnicas frequentemente mais pesadas do que o acesso direto, como a travessia hierárquica da árvore DOM representada por todo o documento.
Também pode ser usado para:
Em JavaScript , é fácil avaliar uma expressão JSON para transformá-la em um objeto nativo:
var donnees = eval('('+donnees_json+')');No entanto, esse método apresenta riscos porque a sequência de caracteres donnees_jsonpode conter qualquer código JavaScript . Existe um método mais seguro que consiste em analisar a sintaxe da string de caracteres donnees_json, única solução disponível nas outras linguagens de programação, com exceção do Python , cuja sintaxe do JSON corresponde aos seus dois tipos principais: as listas e os dicionários.
A partir de 2009 , os navegadores começaram a integrar suporte nativo para o formato JSON. Isso facilita seu manuseio, segurança (contra a avaliação de scripts maliciosos incluídos em uma string JSON) e velocidade de processamento. Assim, os navegadores Firefox 3.5, IE 8 ou Opera 10.5 o integram nativamente.
A avaliação de uma expressão JSON em JavaScript para transformá-la em um objeto é feita da seguinte maneira:
var donnees = JSON.parse(donnees_json);Diferentes bibliotecas javascript oferecem suporte a navegadores mais antigos com sintaxe semelhante.
JSONP ou JSON-P (para JSON com preenchimento , em francês, “JSON avec formage”) é uma extensão em que o nome da função de retorno é indicado. A ideia original veio do blog de Bob Ippolito em 2005 e agora é popular em aplicativos da Web 2.0 , como o kit de ferramentas de aplicativos do Google . As melhorias são planejadas para adicionar argumentos a ele.
JSONP usa tags de script, as chamadas são abertas. Assim, JSONP pode ser impróprio para transmitir informações confidenciais.
JSON5 é uma extensão da sintaxe JSON, destinada a contornar as limitações da última.
EspecificaçãoHJSON é uma extensão da sintaxe JSON, servindo ao mesmo propósito que JSON5 (veja acima).
Especificação