.json | |
---|---|
Extensão do arquivo | .json
|
MIME | application/json
|
Lançamento | 2002 (21–22 anos) |
Última versão | dezembro de 2017 |
Variante de | JavaScript |
Variado para | BSON, RSON, GeoJSON, JsonML, Jayrock |
Padronização | RFC 8259 |
Página oficial | json |
Em computação, JSON (pronúncia ['dʒejzən], J-son em inglês), um acrônimo de JavaScript Object Notation, é um formato compacto, de padrão aberto independente, de troca de dados simples e rápida (parsing) entre sistemas, especificado por Douglas Crockford em 2000, que utiliza texto legível a humanos, no formato atributo-valor (natureza auto-descritiva). Isto é, um modelo de transmissão de informações no formato texto, muito usado em web services que usa transferência de estado representacional (REST) e aplicações AJAX, substituindo o uso do XML. O padrão foi especificado em 2000 e, definido em 2013 nos dois padrões concorrentes, RFC7159 e ECMA-404. Em 2017 a RFC8259 substituiu a 7159 e a ECMA-404 foi revisada.
O JSON é um formato de troca de dados entre sistemas independente de linguagem de programação derivado do JavaScript.[1][2] Mas a partir de 2017 muitas linguagens de programação incluiram código para gerar, analisar sintaticamente dados em formato JSON e também converter para objetos da linguagem. O tipo de mídia da Internet oficial (MIME) para o JSON é application/json
e nomes de arquivos JSON usam a extensão .json
.
O RFC 7493 define um perfil restrito de JSON, conhecido como I-JSON (abreviação de "Internet JSON"), que visa superar alguns problemas de interoperabilidade com o JSON. Cada documento I-JSON é um documento JSON válido, mas o contrário não é necessariamente verdade. Apesar de derivado do Javascript, alguns códigos JSON não são considerados Javascript.[3]
A simplicidade de JSON ajudou a popularizar seu uso, especialmente como uma alternativa para XML em AJAX. Uma das vantagens sobre o XML como um formato para intercâmbio de dados, é a facilidade de escrever um analisador JSON, mesmo em JavaScript, simplesmente usando a função eval()
. Devido a presença deste recurso de JavaScript em todos os navegadores web atuais.
Na prática, os argumentos de desenvolvimento e desempenho do analisador são raramente revelados, devido ao sistema de segurança no uso do eval()
somado a crescente integração de processamento XML nos navegadores web. Por esta razão JSON é tipicamente usado em ambientes onde o tamanho do fluxo de dados entre o cliente e o servidor é extremamente importante, onde a fonte dos dados pode ser explicitamente confiável (favorecendo seu uso por Google, Yahoo, etc., servindo milhões de usuários) e onde a perda dos recursos de processamento XSLT no lado cliente para manipulação de dados ou geração da interface, não é uma consideração.
Enquanto JSON é frequentemente posicionado "em confronto" com XML, não é incomum ver tanto JSON como XML sendo usados na mesma aplicação. Por exemplo, uma aplicação no lado cliente a qual integra dados do Google Maps com dados atmosféricos através de SOAP, requer suporte para ambos formatos de dados.
Existe um crescente suporte para JSON através do uso de pequenos pacotes de terceiros. A lista de linguagens suportadas incluem ActionScript, C/C++, C#, ColdFusion, Java (biblioteca org.json), JavaScript, OCaml, Perl, PHP, ASP 3.0, Python, Rebol, Ruby, Lua, Progress 4GL, Go Lang, Android.
Em dezembro de 2005, com a característica de rápido transmissão de dados, Yahoo! começou a suportar JSON como uma opção para alguns de seus serviços Web,[4] assim como o Google (biblioteca com.google.gson.Gson).[5][6]
O JSON pode ser considerado concorrente da XML na área de troca de informações. Vejamos algumas das principais semelhanças e diferenças entre os modelos de marcação das informações:
Semelhanças:
Diferenças:
Os tipos de dados básicos do JSON são:
true
ou false
, correspondendo aos valores lógicos verdadeiro e falso.null
: Valor vazio ou nulo (não confundir com o zero) representado pela palavra null
.Espaços em branco são permitidos com limites e ignorados em volta e entre elementos sintáticos, mas não dentro de um string. Só quatro caracteres são tratados assim: o espaço, a tabulação horizontal(TAB), o line feed(LF) e o carriage return(CR). Em particular, a marca de ordem de byte não deve aparecer em um documento JSON conforme o padrão. JSON não tem uma sintaxe para comentários. Para troca de dados em um ecossistema aberto, JSON deve estar codificado em UTF-8.
{"Alunos":[
{ "nome": "Edson Sales Arantes", "notas": [ 8, 9, 5 ] },
{ "nome": "Luiz Livelli ", "notas": [ 8, 10, 7 ] },
{ "nome": "Caique Caicedo De Plata", "notas": [ 10, 10, 9 ] }
]}
{"menu":{
"id": "file",
"value": "File",
"popup":{
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
))
O código acima em JSON representado no padrão XML:
<menu id="file" value="File">
<popup>
<menuitem value="New" onclick="CreateNewDoc()" />
<menuitem value="Open" onclick="OpenDoc()" />
<menuitem value="Close" onclick="CloseDoc()" />
</popup>
</menu>
Em 2018, todos os navegadores principais suportavam no mínimo a quinta edição do ECMAScript que provia[7] uma forma segura e rápida de decodificar JSON:
var p = JSON.parse(json_string);