Saltar para o conteúdo

JSON

Origem: Wikipédia, a enciclopédia livre.
.json
Extensão do arquivo.json
MIMEapplication/json
Lançamento2002 (22–23 anos)
Última versãodezembro de 2017; há 7 anos
Variante deJavaScript
Variado paraBSON, RSON, GeoJSON, JsonML, Jayrock
PadronizaçãoRFC 8259
Página oficialjson.org/json-pt.html

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/jsone 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]

Descrição

[editar | editar código]

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]

JSON versus XML

[editar | editar código]

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:

  • Representam informações no formato texto.;
  • Possuem natureza auto-descritiva;
  • Ambos são capazes de representar informação complexa, difícil de representar no formato tabular. Alguns exemplos: objetos compostos (objetos dentro de objetos), relações de hierarquia, atributos multivalorados, arrays, dados ausentes, etc.
  • Ambos podem ser utilizados para transportar informações em aplicações AJAX.
  • Ambos podem ser considerados padrões para representação de dados. XML é um padrão W3C, enquanto JSON foi formalizado na RFC 4627.
  • Ambos são independentes de linguagem. Dados representados em XML e JSON podem ser acessados por qualquer linguagem de programação, através de API’s específicas.

Diferenças:

  • Não é uma linguagem de marcação. Não possui tags de abertura e de fechamento;
  • Representa as informações de forma mais compacta;
  • Não permite a execução de instruções de processamento, enquanto é possível em XML.
  • É tipicamente destinado para a troca de informações, enquanto XML possui mais aplicações. Por exemplo: existem bancos de dados no formato XML e estruturados em SGBD XML nativo.

Tipos de dados, sintaxe e exemplos

[editar | editar código]

Os tipos de dados básicos do JSON são:

  • Number: um número que pode ter sinal, uma parte fracionária separada por um ponto (. , como é usual em alguns países) e eventualmente usar a notação E exponencial, mas não pode incluir não-números como NaN. Não há distinção entre inteiros e números de ponto flutuante, refletindo o fato de que o JavaScript armazena qualquer número como ponto flutuante de dupla precisão, mas outras linguagens que implementem JSON podem ter diferenças na representação dos números.
  • String: uma cadeia de zero ou mais caracteres Unicode. Strings são delimitados por aspas duplas (") e suportam a barra inversa (\) como caractere de escape.
  • Boolean: um dos valores true ou false, correspondendo aos valores lógicos verdadeiro e falso.
  • Array: uma lista ordenada de zero ou mais valores, cada um podendo ser de qualquer tipo. Arrays são delimitados por colchetes ([]), dentro dos quais ficam os valores, também conhecidos como elementos, separados por vírgulas. O primeiro elemento é o de índice 0.
  • Object: uma coleção não ordenada de pares atributo-valor onde os atributos (ou nomes ou chaves) são strings. Como os objects pretendem representar vetores associativos (ECMA-404), é recomendado, mas não obrigatório, que cada atributo seja único dentro de um objeto. Objects são delimitados por chaves ({}) e usam vírgulas para separar cada par, enquanto que no par o atributo e o valor ficam separados por dois pontos (:).
  • 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.

Exemplo de uma lista de alunos com suas notas

[editar | editar código]
{"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 ] }
]}

Exemplo de uma representação de um menu

[editar | editar código]
{"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>

JSON no JavaScript

[editar | editar código]

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);

JSON no prompt

[editar | editar código]

O JSON-promptings, é o uso do formato do prompt estruturado em JSON schema, permite que a solicitação de uma tarefa à IA ocorra exatamente como o usuário deseja.[8] O formato JSON é um mapa de instruções.[9] Ao invés de respostas vagas e parágrafos de texto semelhante a um bate um papo com um amigo, onde o usuário espera ser entendido pela IA.[8] O uso de instruções rotuladas com chaves, valores, campos aninhados, mantém as respostas consistentes e fáceis de analisar nos fluxos de trabalho.[8] Semelhante a um roteiro de filmagem digital, com informações organizadas em blocos precisos, com cada detalhe da cena em sua chave própria: título, estilo, sequências, câmera, iluminação e, som.[9] Além de ter a consistência de personagem e cenário em vídeos longos.[9]

Usando prompt comum, pequenas alterações de palavras podem gerar resultados diferentes e imprevisíveis, usar o prompt estruturado garante a mesma resposta sempre, como uma receita de bolo.[8] Estruture o prompt em camadas (como um sanduíche), começando pelo núcleo da ação e, então adicione técnica e estilo; como por exemplo: núcleo: “Um cachorro correndo”, camadas: “Golden retriever correndo em um campo ao pôr do sol, plano médio, luz quente, som de pássaros ao fundo”.[9]

Alguns componentes essenciais do roteiro do vídeo digital:[9]

  • title: indica contexto e facilita versionamento;
  • style: indica a linguagem visual, como por exemplo: “cinematográfico”, “documentário”, “surrealista”;
  • sequence: parte principal do prompt, cada etapa representa uma microcena;
  • description: indica a ação e os elementos visuais centrais;
  • camera: indica o movimento e enquadramento da câmera, cump por exemplo: close-up, plano aberto, orbit;
  • lighting: indica a atmosfera, como por exemplo: hora do dia, neon, soft light;
  • sound_effects, dialogue, music: ajustam os elementos sonoros;
  • effects, color_palette, style_reference: ajustam a estética e o ritmo narrativo.

Exemplo 1, gerar uma imagem:

  • Prompt padrão “Gere uma imagem animada de um gato dando um soco em um dinossauro.”[8]
  • Prompt estruturado em JSON:[8]
{
  "task": "Generate an animated image",
  "description": {
    "scene": "A cartoon cat punching a dinosaur in a playful fight",
    "characters": {
      "cat": {
        "appearance": "Fluffy orange tabby cat with a mischievous grin",
        "action": "Throwing a punch with its front paw"
      },
      "dinosaur": {
        "appearance": "Green T-Rex with a surprised expression",
        "action": "Reacting to the punch, stumbling backward"
      }
    },
    "background": "A colorful jungle with tall trees and vines",
    "style": "Cartoonish, vibrant colors, suitable for all ages"
  },
  "animation_details": {
    "duration": "3 seconds",
    "frames": [
      {
        "frame": 1,
        "description": "Cat winds up its paw, preparing to punch, with a cheeky smile"
      },
      {
        "frame": 2,
        "description": "Cat’s paw makes contact with the T-Rex’s face, T-Rex looks surprised"
      },
      {
        "frame": 3,
        "description": "T-Rex stumbles back comically, cat stands proudly"
      }
    ],
    "loop": true
  },
  "constraints": {
    "resolution": "512x512 pixels",
    "tone": "Playful and humorous, non-violent",
    "colors": "Bright and vibrant"
  }
}

Referências

  1. «ECMA-404 The JSON Data Interchange Standard.». json.org. Consultado em 23 de janeiro de 2015 
  2. «Network Working Group». ietf.org (em inglês). Consultado em 23 de janeiro de 2015 
  3. «JSON». Mozilla Developer Network. Consultado em 17 de janeiro de 2018 
  4. «Yahoo Mobile Developer Conference». developer.yahoo.com. Consultado em 23 de janeiro de 2015 
  5. «JSON fácil em Java com GSon !». blog.globalcode.com.br. Consultado em 13 de março de 2018 
  6. «Gson – Converta JSON em um objeto Java de forma simples». www.aquiejava.com. Consultado em 13 de março de 2018 
  7. «Standard ECMA-262». ecma-international.org. Consultado em 13 de setembro de 2015 
  8. a b c d e f «Sobre JSON prompting». Analytics Vidhya 
  9. a b c d e «Veo3: como usar prompts em JSON para criar vídeos mais consistentes com IA - Human Academy - O Studio que te ensina sobre IA com as ferramentas mais atualizadas do mercado». www.humanacademy.ai. Consultado em 14 de novembro de 2025 

Ligações Externas

[editar | editar código]
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.