JSON
| JSON | ||
|---|---|---|
|
| ||
| https://json.org/ , https://json.org/json-fr.html e https://json.org/json-it.html | ||
| Informações gerais | ||
| extensão de arquivo |
.json | |
| tipo mime |
application/json | |
| tipo de formato | linguagem de marcação | |
| estendido de | javascript | |
| Padrões) | STD 90 ( RFC 8259), ECMA-404 , ISO/IEC 21778:2017 | |
| formato aberto |
| |
JSON ( JavaScript Object Notation ) é um formato de texto simples para troca de dados. É um subconjunto da notação literal de objeto JavaScript , embora, devido à sua ampla adoção como alternativa ao XML , seja considerado um formato independente de linguagem.
Uma das supostas vantagens do JSON sobre o XML como formato de troca de dados é que é muito mais fácil escrever um analisador para ele. Em JavaScript, um texto JSON pode ser facilmente analisado usando a função eval(), algo que (devido à onipresença do JavaScript em quase todos os navegadores da web ) tem sido fundamental para sua aceitação pela comunidade de desenvolvedores AJAX .
Na prática, os argumentos para a facilidade de desenvolvimento de analisadores ou seu desempenho são de pouca relevância, devido às questões de segurança levantadas pelo uso eval()e aumento do processamento XML nativo incorporado aos navegadores modernos. Por esse motivo, JSON é comumente usado em ambientes onde o tamanho do fluxo de dados entre cliente e servidor é de suma importância (daí seu uso pelo Yahoo! , Google , Mozilla , etc, atendendo milhões de usuários) quando os dados de origem são explicitamente confiável e onde não é importante que você não tenha processamento XSLT para manipular os dados no cliente.
Embora o JSON tenda a ser considerado como uma alternativa ao XML, a verdade é que não é incomum a utilização de JSON e XML na mesma aplicação ; assim, uma aplicação cliente que integre dados do Google Maps com dados meteorológicos em SOAP ( Simple Object Access Protocol ) precisa fazer uso de ambos os formatos.
Em dezembro de 2005, o Yahoo! começou a fornecer suporte JSON opcional em alguns de seus serviços web . [ 1 ]
Nome e pronúncia
Em inglês , JSON é pronunciado de forma acrônica , como o nome da letra J ( jay , /yéi/) seguida da sílaba “son”. O resultado usual, com a primeira sílaba tônica (/yéison/), é pronunciado da mesma forma que o nome Jason, embora Douglas Crockford , desenvolvedor do formato JSON, enfatize a segunda sílaba, como /yeisón/. [ 2 ]
Em espanhol , tenha em mente que JSON é uma sigla e que às vezes não há uma única maneira de pronunciá-los. Segundo a norma ortográfica, [ 3 ] o normal seria pronunciá-lo como /jotasón/. Alguns a pronunciam como /jason/, mas se afastaria mais da pronúncia da sigla ao introduzir mais uma letra que não existe na sigla (JASON) e, portanto, seria uma pronúncia incorreta.
Alguns que não são linguistas preferem pronunciar a sigla em espanhol da maneira inglesa, [ 4 ] mas isso não o torna mais correto, mas seria mais típico do espanglês americano . FBI não é pronunciado como /éfbiai/ em espanhol, assim como /síaiei/ não é pronunciado quando se fala da CIA. A sigla inglesa ASAP ( assim que possível ) é pronunciada /asap/ em espanhol, não /eieseipi/, para economia de linguagem. De acordo com as regras do espanhol, poderia ser lexicalizado como "jotasón/jotasones", mas não há uso em textos acadêmicos.
Sintaxe
Os tipos de dados disponíveis com JSON são:
- Números: Números negativos são permitidos e opcionalmente podem conter uma parte fracionária separada por pontos. Exemplo: 123.456
- Strings: representam sequências de zero ou mais caracteres. Eles são colocados entre aspas duplas e strings de escape são permitidas. Exemplo:
"Hola" - Booleanos : Representam valores booleanos e podem ter dois valores:
trueefalse - null: representa o valor nulo.
- Array : Representa uma lista ordenada de zero ou mais valores que podem ser de qualquer tipo. Os valores são separados por vírgulas e o vetor é colocado entre colchetes. Exemplo
["juan","pedro","jacinto"] - Objetos: São coleções não ordenadas de pares na forma <nome>:<valor> separados por vírgulas e entre chaves. O nome deve ser uma string entre aspas duplas. O valor pode ser de qualquer tipo. Exemplo:
{
"department" : 8 ,
"deptname" : "Vendas" ,
"manager" : "Juan Rodríguez" ,
"funcionários" :[
{
" firstname " : "Pedro" ,
"lastname" : "Fernández"
},{
"name" " : "Jacinto" ,
"sobrenome" : "Benavente"
}
]
}
Modelos de processamento
Como JSON é um formato amplamente utilizado para troca de dados, APIs foram desenvolvidas para diferentes linguagens (por exemplo ActionScript , C , C++ , C# , ColdFusion , Common Lisp , Delphi , E , Eiffel , Java , JavaScript , ML , Objective- C , Objective CAML , Perl , PHP , Python , Rebol , Ruby , Lua e Visual FoxPro ) que permitem analisar, gerar, transformar e processar esse tipo de dados.
Os modelos de programação mais utilizados para lidar com JSON nas diferentes linguagens são: [ 5 ]
- Modelo de objeto.- O JSON completo é armazenado na memória em formato de árvore. Essa árvore é navegada, analisada e modificada com as APIs apropriadas. Como ele carrega tudo na memória e depois o processa, esse modelo consome muitos recursos. No entanto, é muito flexível para manipular o conteúdo. Este modelo é permitido, por exemplo, em Java pelo JSR 353 e pela biblioteca Jackson .
- Modelo de fluxo: os dados são lidos ou escritos em blocos. Por exemplo, cada vez que um bloco é lido, o analisador gera eventos apropriados para indicar que tipo de bloco é. O cliente pode processar o conteúdo ouvindo os eventos apropriados. Além disso, é o cliente quem decide como o JSON é lido, permitindo que o conteúdo seja interrompido ou ignorado no meio do processo. O processo de escrita tem propriedades análogas. Por exemplo, este modelo é permitido em java pelo JSR 353.
- Convertendo objetos JSON em objetos de linguagem. Em Java isso é feito, por exemplo, pelas bibliotecas Jackson e Gson .
Usando JSON
Em teoria, é trivial analisar JSON em JavaScript usando a JSON.parse()função integrada da linguagem. Por exemplo:
meuObjeto = JSON . analisar ( json_data );
Na prática, as considerações de segurança geralmente são contra o uso de eval em dados brutos, e um analisador JavaScript separado deve ser usado para garantir a segurança. O analisador fornecido pelo JSON.org o usa eval()em sua função de análise, protegendo-o com uma expressão regular para que a função veja apenas expressões seguras.
Um exemplo de acesso a dados JSON usando XMLHttpRequest é:
var http_request = new XMLHttpRequest ();
var url = "http://example.net/jsondata.php" ; // Este URL deve retornar dados JSON
// Baixe os dados JSON do servidor.
http_request . onreadystatechange = handle_json ;
http_request . open ( "GET" , url , true );
http_request . enviar ( nulo );
function handle_json () {
if ( http_request . readyState == 4 ) {
if ( http_request . status == 200 ) {
var json_data = http_request . respostaTexto ;
var the_object = eval ( "(" + json_data + ")" );
} else {
alert ( "Ocorreu um problema com a URL." );
}
http_request = null ;
}
}
Observe que o uso de XMLHttpRequest neste exemplo não é suportado por todos os navegadores, pois existem variações sintáticas para navegadores baseados no Internet Explorer , Opera , Safari e Mozilla . [ 6 ]
Também é possível usar <iframe>elementos ocultos para solicitar os dados de forma assíncrona ou usar solicitações <form target="url_to_cgi_script" />. Esses métodos eram os mais comuns antes do advento do uso generalizado do XMLHttpRequest.
Existe uma biblioteca [ 7 ] para o framework .NET que exporta classes .NET com sintaxe JSON para comunicação entre cliente e servidor, nos dois sentidos.
Exemplo JSON
Abaixo está um exemplo simples de definição de barra de menu usando JSON e XML.
JSON:
{
"menu" : {
"id" : "arquivo" ,
"valor" : "Arquivo" ,
"popup" : {
"menuitems" : [
{
"valor" : "Novo" , "onclick" : "CreateNewDoc()"
},{
"value" : "Open" , "onclick" : "OpenDoc()"
},{
"value" : "Close" , "onclick" : "CloseDoc()"
}
]
}
}
}
É uma possível representação JSON do seguinte XML:
<menu id= "arquivo" value= "Arquivo" >
<popup>
<menuitem value= "New" onclick= "CreateNewDoc()" />
<menuitem value= "Abrir" onclick= "OpenDoc()" />
<menuitem value= "Fechar" onclick= "CloseDoc()" />
</popup>
</menu>
Comparação com XML e outras linguagens de marcação
Existem muitos analisadores JSON no lado do servidor, com pelo menos um analisador para a maioria dos ambientes. Em algumas linguagens, como Java ou PHP , existem diferentes implementações para escolher. Em JavaScript, a análise é possível nativamente com o JSON.parse(). Ambos os formatos carecem de um mecanismo para representar objetos binários grandes .
Independentemente da comparação XML, o JSON pode ser muito compacto e eficiente se usado de forma eficaz. Por exemplo, o aplicativo DHTML de pesquisa em "BarracudaDrive" (em inglês) . Arquivado do original em 21 de maio de 2006. recebe listagens de diretório como JSON do servidor. Esse aplicativo de pesquisa está constantemente consultando o servidor em busca de novos diretórios e é incrivelmente rápido, mesmo em uma conexão lenta.
Os ambientes do lado do servidor geralmente exigem que um objeto ou função do analisador JSON seja integrado. Alguns programadores, especialmente aqueles familiarizados com a linguagem C , acham JSON mais natural que XML, mas outros desenvolvedores acham sua notação concisa um pouco confusa, especialmente ao lidar com dados altamente aninhados ou profundamente aninhados.
Há mais comparações entre JSON e XML em JSON.org [ 8 ]
YAML é um superconjunto de JSON que tenta superar algumas de suas limitações. Embora significativamente mais complexo, [ 9 ] ainda pode ser considerado leve. A linguagem de programação Ruby usa YAML como formato de serialização padrão . Assim, é possível lidar com JSON de forma bastante simples.
Veja também
- AJAX
- base livre
- linguagem jq para processamento JSON
- javascript
- XMLHttpRequest
- XML
- YAML , superconjunto de JSON
Referências
- ↑ Yahoo! . «Usando JSON com o Yahoo! Serviços Web» . Arquivado a partir do original em 6 de janeiro de 2010 . Recuperado em 2 de março de 2010 .
- ^ "Doug Crockford "Google Tech Talks: JavaScript: The Good Parts " " . 7 de fevereiro de 2009.
- ↑ RAE. «sigla | Dicionário Pan-hispânico de Dúvidas» . "Dicionário Pan-hispânico de Dúvidas" . Recuperado em 25 de junho de 2021 .
- ↑ Kapic, Edin (15 de abril de 2016). «“Jotasón” e a (má) pronúncia dos termos informáticos» . EdinKapic . com . Recuperado em 2 de setembro de 2018 .
- ↑ RESTful Java Web Services. Jobinesh Purushothaman. Packt Publishing 2015. Segunda Edição
- ↑ "Extensão de arquivo .json: para que servem os arquivos JSON?" . arquivos abertos . Recuperado em 22 de outubro de 2021 .
- ↑ http://ajax.schwarz-interactive.de Arquivado em 7 de março de 2011, no Wayback Machine .
- ↑ "Página de exemplo" . JSON.org (em inglês) .
- ↑ Ippolito, Bob (19 de julho de 2005). "O que aconteceu com YAML?" (em inglês) . Arquivado do original em 14 de fevereiro de 2012 . Recuperado em 22/11/2012 .
Links externos
- A Especificação JSON (em inglês) - Especificação JSON (em espanhol)
- JSON: a alternativa sem gordura ao XML
- Apresentação útil de JSON (em espanhol)
- Analisador JSON: Visualize e edite JSON
- tutoriais
-
- AJAX sem XML Comparação entre objetos XML, JSON e Javascript
- Acelerando o AJAX com JSON Mostra como é fácil referenciar JSON em vez de XML
- Comunicação AJAX - PHP com JSON Mostra como obter informações em AJAX consultando um arquivo PHP. Leva em conta o problema de caracteres especiais. (em espanhol)
- Animações para web com JSON Mostra como exportar animações com After Effects no formato JSON (em espanhol)