Douglas Crockford e o JSON: por que todo aplicativo o utiliza
Como Douglas Crockford popularizou o JSON e por que ele se tornou a linguagem padrão para apps web e APIs — com dicas práticas para usar JSON bem hoje.

JSON em Português Claro: O que é e por que importa
JSON (JavaScript Object Notation) é uma forma leve de representar dados como texto simples usando pares chave–valor e listas.
Se você constrói aplicações web — mesmo que não pense muito em “formatos de dados” — o JSON provavelmente já é a cola que mantém seu produto junto. É assim que um frontend solicita dados, como o backend responde, como apps móveis sincronizam estado e como serviços terceiros enviam eventos. Quando o JSON está claro e consistente, times entregam mais rápido; quando está bagunçado, cada feature leva mais tempo porque todo mundo discute o que os dados “significam”.
Um exemplo pequeno
Aqui está um pequeno objeto JSON que você lê num relance:
{
"userId": 42,
"name": "Sam",
"isPro": true,
"tags": ["beta", "newsletter"]
}
Mesmo sem contexto técnico, você geralmente infere o que está acontecendo: um usuário tem um ID, um nome, uma flag de status e uma lista de tags.
O que você vai tirar deste artigo
Você vai aprender:
- De onde veio o JSON e como se tornou mainstream (incluindo o papel de Douglas Crockford)
- Por que seu design “minimalista” é parte importante da vitória
- Por que o JSON se encaixa tão naturalmente com APIs e HTTP
- Orientações práticas para usar JSON bem — para que payloads continuem compreensíveis à medida que sua aplicação cresce
O objetivo é simples: ajudar você a entender não só o que é JSON, mas por que quase todo app “fala” ele — e como evitar erros comuns que times repetem.
O papel de Douglas Crockford em tornar o JSON mainstream
Douglas Crockford não “inventou” todas as ideias por trás do JSON, mas fez algo igualmente importante: tornou um padrão simples e funcional visível, deu um nome a ele e o impulsionou ao mainstream.
O problema da web inicial: troca de dados era confusa
Nos primeiros dias das aplicações web, times lidavam com opções desconfortáveis para mover dados entre navegador e servidor. XML era comum, mas verboso. Formatos personalizados baseados em delimitadores eram compactos, porém frágeis. JavaScript podia tecnicamente avaliar dados como código, mas isso borrava a linha entre “dados” e “script executável”, receita certa para bugs e problemas de segurança.
Crockford enxergou um caminho mais limpo: usar um pequeno subconjunto da sintaxe literal do JavaScript que poderia representar dados simples de forma confiável — objetos, arrays, strings, números, booleanos e null — sem recursos extras.
Nome, documentação e “a página que você poderia apontar”
Uma das maiores contribuições de Crockford foi social, não técnica: ele chamou de JSON (JavaScript Object Notation) e publicou documentação clara em json.org. Isso deu aos times um vocabulário compartilhado (“vamos enviar JSON”) e uma referência curta o suficiente para ler e rígida o bastante para implementar.
Ele também promoveu o JSON como formato de dados independente do JavaScript como linguagem: muitas linguagens podiam parsear e gerar JSON, e ele mapeava naturalmente para estruturas de dados comuns.
Marcos de padronização em que se podia confiar
A adoção acelera quando times se sentem seguros em apostar num formato a longo prazo. O JSON gradualmente ganhou esse status de “aposta segura” por meio de marcos conhecidos:
- RFC 4627 (2006): descrição formal inicial para implementações interoperáveis
- ECMA-404: um padrão conciso definindo a sintaxe do JSON
- RFC 7159 e depois RFC 8259 (2017): clarificaram interoperabilidade e cimentaram o lugar do JSON na internet
A defesa de Crockford, combinada com esses padrões e um ecossistema crescente de parsers, ajudou o JSON a passar de convenção prática para a forma padrão de comunicação entre apps — especialmente em APIs HTTP (assunto tratado também em /blog/json-and-apis).
Antes do JSON: formatos de dados com que a web tentou conviver
Antes do JSON se tornar o jeito padrão de mover dados, a web dependia de uma mistura de formatos que eram ou pesados demais, inconsistentes demais ou customizados demais para escalar entre times.
O que se usava antes do JSON
XML era a grande escolha “padrão”. Funcionava entre linguagens, tinha ferramentas e podia representar estruturas aninhadas. Também trazia bastante cerimônia.
Ao mesmo tempo, muitas aplicações passavam dados como query strings customizadas (especialmente em pedidos AJAX iniciais): pares chave/valor amontoados em URLs ou corpos de POST. Outros inventavam formatos de texto ad‑hoc — um CSV aqui, um blob delimitado por pipes ali — frequentemente com regras de escape feitas à mão que só um desenvolvedor entendia.
Pontos de dor que os times enfrentavam
Os problemas comuns não eram teóricos:
- Verbosity: XML fazia payloads pequenos parecerem grandes, e payloads grandes parecerem enormes.
- Complexidade de parse: XML do mundo real muitas vezes exigia parsers mais pesados e tratamento cuidadoso de namespaces, atributos vs elementos e espaços em branco.
- Convenções inconsistentes: com formatos ad‑hoc, cada endpoint virava um mini‑protocolo. Clientes tinham que adivinhar tipos, codificação e casos de borda.
Por que “bom o bastante e simples” vence
A maioria das apps não precisa de um formato que expresse toda possível estrutura de documento. Elas precisam de uma forma previsível de enviar objetos, arrays, strings, números e booleanos — rápido, consistente e com pouco espaço para interpretação. Formatos mais simples reduzem o número de decisões (e erros) que times tomam por endpoint.
Uma comparação rápida: XML vs JSON
<user>
<id>42</id>
<name>Ada</name>
<isActive>true</isActive>
</user>
{
"id": 42,
"name": "Ada",
"isActive": true
}
Ambos expressam a mesma ideia, mas o JSON é mais fácil de escanear, gerar e está mais próximo de como a maioria das aplicações já modela dados em memória.
Por que o JSON é minimalista: escolhas de design que funcionaram
A permanência do JSON não é acidente. Ele funciona porque é deliberadamente pequeno: estrutura suficiente para representar dados de aplicação reais, sem abrir espaço para variações infinitas.
O menor conjunto útil de blocos de construção
O JSON oferece uma caixa de ferramentas mínima que mapeia limpamente para como a maioria das apps pensa sobre dados:
- Objects: campos nomeados (como um contato com
name,email) - Arrays: listas ordenadas (como itens num carrinho)
- Strings: texto
- Numbers: valores numéricos (com algumas ressalvas)
- Booleans:
true/false - null: um “sem valor” explícito
É isso. Sem datas embutidas, sem comentários, sem tipos numéricos customizados, sem referências. Essa simplicidade torna o JSON fácil de implementar entre linguagens e plataformas.
Legível por humanos, amigável para máquinas — por design
JSON é legível o suficiente para pessoas escanearem em logs e respostas de API, ao mesmo tempo que é fácil para máquinas parsearem rápido. Evita cerimônia extra, mas mantém delimitadores claros ({}, [], :) para que parsers sejam rápidos e confiáveis.
A troca: por ser tão minimalista, times precisam combinar convenções para coisas como timestamps, dinheiro e identificadores (por exemplo, strings ISO‑8601 para datas).
Rigor é característica, não limitação
As regras rígidas do JSON (strings entre aspas duplas, sem vírgulas finais, conjunto pequeno e fixo de tipos) reduzem ambiguidade. Menos ambiguidade significa menos falhas “funciona na minha máquina” quando diferentes sistemas trocam dados.
Uma ideia errada a esclarecer
JSON se parece com a sintaxe de objetos JavaScript, mas JSON não é JavaScript. É um formato de dados agnóstico em relação à linguagem, com suas próprias regras, utilizável em Python, Java, Go, Ruby e em qualquer lugar que precise de serialização e interoperabilidade consistentes.
Como o JSON se tornou o padrão entre frontends e backends
JSON não venceu por ser o formato mais rico em recursos. Venceu porque se encaixava no modo como apps web já eram construídas: um navegador pesado em JavaScript falando com um servidor via requisições HTTP simples.
JavaScript já estava em toda página
Quando os navegadores se padronizaram em torno do JavaScript, o lado cliente já tinha uma maneira embutida de representar dados estruturados: objetos, arrays, strings, números, booleanos e null. O JSON espelhava esses primitivos de forma próxima, então mover dados entre “o que o navegador entende” e “o que o servidor envia” parecia natural.
Apps Ajax iniciais aceleraram isso. Em vez de retornar páginas HTML completas, servidores podiam devolver um pequeno payload para a UI renderizar. Uma resposta assim era imediatamente útil:
{
"user": {"id": 42, "name": "Sam"},
"unreadCount": 3
}
Parse fácil em todo lugar, não só navegadores
Mesmo que a sintaxe do JSON pareça JavaScript, ele é neutro em relação à linguagem. Assim que servidores e clientes em outras linguagens precisaram interoperar com frontends web, bibliotecas JSON surgiram — e rapidamente se tornaram “equipamento padrão”. Parsear uma string JSON para estruturas nativas geralmente é uma chamada de função, e gerar JSON é tão simples quanto.
Ferramentas consolidaram a escolha padrão
Assim que frameworks, clientes de API, debuggers, proxies e ferramentas de documentação assumiram JSON, escolher outra coisa criou atrito. Desenvolvedores podiam inspecionar payloads nas devtools do navegador, copiar/colar exemplos em testes e contar com bibliotecas maduras para codificar, decodificar e tratar erros.
Um payload, muitos consumidores
Uma única resposta JSON pode servir uma UI web, um app móvel, um serviço interno e uma integração de terceiro com mudanças mínimas. Essa interoperabilidade fez do JSON uma aposta segura para times construindo “um backend, muitos frontends” — e ajudou a torná‑lo o contrato padrão entre cliente e servidor.
JSON e APIs: o encaixe prático com HTTP
JSON não venceu por ser sofisticado — encaixou bem no modo como a web já funcionava. HTTP é construído em torno de enviar uma requisição e receber uma resposta, e JSON é uma maneira fácil e previsível de representar o “corpo” dessa resposta (ou requisição) como dados estruturados.
HTTP + JSON em um minuto
Uma requisição de API geralmente inclui um método e uma URL (por exemplo, GET /users?limit=20). O servidor responde com um código de status (como 200 ou 404), headers e um corpo opcional.
Quando o corpo é JSON, um header chave é:
Content-Type: application/json
Esse header diz aos clientes como interpretar os bytes que recebem. Na via de envio (cliente → servidor), enviar Content-Type: application/json sinaliza “estou postando JSON”, e servidores podem parseá‑lo de forma consistente.
Padrões comuns de resposta de API
JSON funciona especialmente bem para padrões repetidos que aparecem em muitas APIs.
Paginação frequentemente envolve envolver uma lista com metadados:
{
"data": [{"id": 1, "name": "A"}],
"pagination": {"limit": 20, "offset": 0, "total": 153}
}
Filtros e ordenação tipicamente acontecem na query string da URL, enquanto os resultados permanecem como um array JSON (ou um campo data). Por exemplo: GET /orders?status=paid&sort=-created_at.
Respostas de erro ganham ao ter uma forma padrão para que clientes exibam mensagens e tratem tentativas:
{
"error": {
"code": "invalid_request",
"message": "limit must be between 1 and 100",
"details": {"field": "limit"}
}
}
O encaixe prático é simples: HTTP fornece entrega e significado (verbos, códigos de status, cache), enquanto JSON fornece uma estrutura leve e legível para os dados em si.
JSON vs XML: por que o JSON normalmente vence para dados de apps
Quando as pessoas comparam JSON e XML, muitas vezes estão comparando “dados para apps” versus “dados para documentos”. Ambos os formatos podem representar informação estruturada, mas o JSON tende a corresponder ao que a maioria das aplicações realmente troca: objetos simples, listas, strings, números, booleanos e null.
Legibilidade e tamanho: menos tags, menos ruído
XML é verboso por design. Repetir tags de abertura e fechamento torna payloads maiores e mais difíceis de escanear em logs ou inspectores de rede. JSON normalmente transmite o mesmo sentido com menos caracteres e menos poluição visual, o que ajuda no debug e pode reduzir custos de banda em escala.
Isso não é só estética: payloads menores muitas vezes significam transferências mais rápidas e menos trabalho para parsers e proxies.
Alinhamento do modelo de dados: mapas e listas se ajustam a dados de app
A maior parte dos dados de app naturalmente parece com dicionários (mapas chave/valor) e arrays (listas): um usuário com atributos, um pedido com itens, uma página com componentes. JSON mapeia diretamente para esse modelo mental e corresponde a estruturas nativas no JavaScript e na maioria das linguagens modernas.
XML pode representar as mesmas estruturas, mas geralmente exige convenções: atributos vs elementos, elementos filhos repetidos para listas e regras extras para “o que conta como número” (já que tudo é texto, a menos que você acrescente tipagem por cima).
Onde XML ainda pode brilhar (sem desmerecê‑lo)
XML continua forte para casos centrados em documentos: conteúdo misto (texto intercalado com marcação), fluxos de publicação e ecossistemas com ferramentas maduras de XML (por exemplo, certas integrações empresariais). Se seu payload se parecer mais com um documento do que com um grafo de objetos, XML pode ser uma boa escolha.
Orientação: escolha com base nas necessidades, não nas tendências
Se seu objetivo principal é trocar dados de aplicação entre frontend, backend e APIs, JSON é geralmente a escolha mais simples e direta. Se você precisa de marcação de documento, conteúdo misto ou integrar num domínio pesado em XML, XML pode ser a ferramenta certa.
Regras do JSON que ainda surpreendem times
JSON se parece com “objetos JavaScript”, então times frequentemente assumem que podem tratá‑lo como JavaScript. É aí que bugs aparecem: JSON é mais estrito, menor e menos permissivo.
As regras de sintaxe estritas
Algumas falhas do tipo “funciona na minha máquina” aparecem repetidamente:
- Aspas duplas são obrigatórias para chaves e valores string.
{name: "Ada"}não é JSON;{ "name": "Ada" }é. - Sem vírgulas finais.
{ "a": 1, }falhará em muitos parsers. - Sem comentários.
//e/* ... */são inválidos. Se precisar de notas, mantenha‑as na documentação ou use um campo separado (com cuidado) durante o desenvolvimento.
Essas restrições são intencionais: mantém parsers simples e consistentes entre linguagens.
Números, datas e decimais: escolha tipos de propósito
JSON tem apenas um tipo numérico: number. Não há integer, decimal ou date embutidos.
- Dinheiro e decimais de alta precisão (preços, taxas) frequentemente são mais seguros como strings (por exemplo,
"19.99") para evitar diferenças de arredondamento entre sistemas. - Datas e horários normalmente devem ser strings num formato padrão, mais comumente ISO 8601 (por exemplo,
"2025-12-26T10:15:30Z"). Evite formatos de data customizados que demandem adivinhação. - Cuidado com inteiros muito grandes: alguns ambientes não os representam com precisão. Em dúvida, envie como strings.
Unicode e escape em sistemas reais
JSON é Unicode, mas sistemas reais ainda tropeçam em codificação e escaping:
- Garanta que tudo esteja consistentemente em UTF-8 na transmissão.
- Lembre‑se que certos caracteres devem ser escapados dentro de strings (como aspas
"e barras invertidas\\). - Fique atento a caracteres invisíveis copiados de documentos (espaços sem quebra, aspas tipográficas) que podem quebrar o parse.
Segurança: parseie JSON com segurança
Sempre parseie JSON com um parser real (JSON.parse ou equivalente na sua linguagem). Evite qualquer abordagem estilo eval, mesmo que “pareça mais rápida”. E valide entradas nas bordas — especialmente para APIs públicas — para que campos ou tipos inesperados não cheguem à lógica de negócio.
Projetando payloads JSON que envelhecem bem
Um payload JSON não é apenas “dados em trânsito” — é uma interface de longo prazo entre times, sistemas e você no futuro. A diferença entre um payload que dura e um que é reescrito toda sprint costuma ser disciplina entediante: consistência, gestão de mudanças e casos de borda previsíveis.
Consistência vence criatividade
Escolha regras de nomeação e mantenha‑as:
- Use um estilo de casing (comum é
camelCaseousnake_case) e não misture. - Mantenha chaves estáveis. Renomear
userIdparaidé uma mudança breaking mesmo que o significado pareça óbvio. - Prefira campos explícitos em vez de polimorfismo “mágico”. Uma chave que muda de tipo (
"count": 3vs"count": "3") causará bugs difíceis de rastrear.
Versionamento sem drama
Você pode evitar a maioria das guerras de versão tornando mudanças aditivas:
- Adicione novos campos opcionais em vez de alterar ou remover os existentes.
- Trate remoções como deprecações: mantenha o campo antigo, pare de documentá‑lo para novos clientes e anuncie uma data de remoção.
- Se precisar de uma mudança breaking de verdade, versione o endpoint (
/v2/...) ou inclua um sinal claro de versão num header — não mude sem aviso as semantics.
Erros devem ser previsíveis e chatamente entediantes
Clientes lidam melhor com falhas quando erros têm uma forma única:
{
"error": {
"code": "INVALID_ARGUMENT",
"message": "email must be a valid address",
"details": { "field": "email" }
}
}
Documentação que corresponde à realidade
Excelentes docs JSON incluem exemplos reais — respostas de sucesso e de falha — com campos completos. Mantenha exemplos sincronizados com o comportamento em produção e destaque quais campos são opcionais, anuláveis ou deprecados. Quando exemplos batem com respostas reais, integrações avançam mais rápido e quebram menos.
Onde o Koder.ai entra (se você estiver construindo APIs rapidamente)
Se você usa um fluxo vibe‑coding para girar novas features rápido, contratos JSON ficam ainda mais importantes: iteração rápida é ótima até que clientes e serviços diverjam.
No Koder.ai, times comumente geram um frontend React mais um backend Go + PostgreSQL e iteram formas de API em planning mode antes de travá‑las. Recursos como snapshots e rollback ajudam quando uma pequena mudança JSON vira breaking, e export de código fonte facilita manter o contrato no repositório e aplicá‑lo com testes.
Validação e contratos: JSON Schema e além
JSON é fácil de gerar, e isso é tanto força quanto armadilha. Se um serviço envia "age": "27" (string) e outro espera 27 (number), nada no JSON em si evitará isso. O resultado costuma ser o pior tipo de bug: um crash do cliente em produção ou um glitch sutil na UI que só aparece com certos dados.
Por que validação importa (mesmo para JSON “simples”)
Validação serve para capturar dados ruins ou inesperados antes que atinjam quem depende deles — seu frontend, integrações parceiras, pipeline de analytics ou apps móveis.
Pontos de falha comuns incluem campos obrigatórios ausentes, chaves renomeadas, tipos errados e valores “quase certos” (como datas em formatos inconsistentes). Um pequeno passo de validação na borda da API transforma essas falhas em mensagens de erro claras.
JSON Schema: o que é e quando usar
JSON Schema é uma forma padrão de descrever como seu JSON deve ser: propriedades obrigatórias, tipos permitidos, enums, padrões e mais. É mais útil quando:
- Você tem múltiplos clientes (web + mobile + parceiros) consumindo a mesma API
- Precisa de mudanças compatíveis no tempo
- Quer checks automáticos em CI/CD, não só revisão humana
Com um schema, você pode validar requisições no servidor, validar respostas em testes e gerar documentação. Muitos times o combinam com docs de API (frequentemente via OpenAPI), para que o contrato seja explícito e não “conhecimento tribal”. Se você já publica docs, linkar exemplos de schema a partir de /docs pode manter as coisas consistentes.
Alternativas leves (e complementos)
Nem todo time precisa de ferramentas completas de schema no dia um. Opções práticas incluem:
- Exemplos de payloads compartilhados no repositório (golden files)
- Testes de contrato que verificam se respostas reais batem com expectativas
- Contratos dirigidos pelo consumidor (clientes definem o que precisam)
Uma regra útil: comece com exemplos e testes de contrato, depois adicione JSON Schema quando mudanças e integrações começarem a multiplicar.
Performance e confiabilidade com JSON em escala
JSON parece “leve” quando você envia alguns campos. Em escala — clientes móveis em redes ruins, APIs de alto tráfego, páginas pesadas em analytics — o JSON pode virar problema de performance ou risco de confiabilidade se você não moldá‑lo e enviá‑lo com cuidado.
Mantenha payloads pequenos: paginação, filtragem e evite overfetching
O problema de escala mais comum não é o parse do JSON — é enviar muito dele.
Paginação é a vitória simples: retorne pedaços previsíveis (por exemplo, limit + cursor) para que clientes não baixem milhares de registros de uma vez. Para endpoints que retornam objetos aninhados, considere respostas parciais: deixe o cliente pedir só o que precisa (campos selecionados ou expansões “include”). Isso evita overfetching, quando uma tela só precisa de name e status mas recebe todos os detalhes históricos e campos de configuração.
Uma regra prática: desenhe respostas em torno de ações do usuário (o que uma tela precisa agora), não em torno do que seu banco de dados consegue fazer com um join.
Compressão e cache: menos bytes, menos requisições
Se sua API serve respostas JSON grandes, compressão pode reduzir dramaticamente o tamanho da transferência. Muitos servidores conseguem gzip ou brotli automaticamente, e a maioria dos clientes lida com isso sem código extra.
Cache é a outra alavanca. Em alto nível, vise:
- Respostas cacheáveis para dados que não mudam a cada segundo
- Regras de cache claras (por exemplo, usando ETag ou padrões de “last modified”)
Isso reduz downloads repetidos e suaviza picos de tráfego.
Streaming e parse incremental (quando JSON fica enorme)
Para saídas muito grandes — exports, feeds de evento, syncs em massa — considere respostas em streaming ou parse incremental para que clientes não precisem carregar todo o documento na memória antes de fazer algo útil. Não é necessário para a maioria das apps, mas é uma opção valiosa quando “um grande blob JSON” começa a estourar timeouts.
Observabilidade: logue com segurança sem vazar dados
JSON é fácil de logar, o que é útil e perigoso. Trate logs como uma superfície de produto:
- Evite logar corpos completos de requisição/resposta por padrão
- Redija campos sensíveis (tokens, senhas, identificadores pessoais)
- Prefira logs estruturados que capturem IDs, tempos e códigos de erro ao invés de payloads brutos
Feito corretamente, você depura mais rápido enquanto reduz o risco de exposição acidental de dados.
O que vem a seguir para o JSON e um checklist simples de boas práticas
JSON não está “acabado” — está estável. O que muda agora é o ecossistema ao redor: editores melhores, validação mais forte, contratos de API mais seguros e mais ferramentas que ajudam times a evitar mudanças breaking acidentais.
Para onde o JSON vai
JSON provavelmente continuará sendo o formato padrão de transporte para a maioria das apps web e móveis, porque é amplamente suportado, fácil de depurar e mapeia bem para estruturas de dados comuns.
A maior mudança é em direção a APIs tipadas: times ainda enviam JSON, mas definem isso com mais precisão usando ferramentas como JSON Schema, OpenAPI e geradores de código. Isso significa menos momentos de “adivinhe a forma”, autocompletar melhor e detecção antecipada de erros — sem abandonar o JSON.
Formatos relacionados: JSON Lines / NDJSON
Quando você precisa enviar ou armazenar muitos registros de forma eficiente (logs, eventos de analytics, exports), um único array JSON gigante pode ser incômodo. JSON Lines (também chamado NDJSON) resolve isso colocando um objeto JSON por linha. Ele faz streaming bem, pode ser processado linha a linha e funciona bem com ferramentas de linha de comando.
Um checklist simples de boas práticas
Use isto como um checklist rápido antes de criar payloads que vão viver mais que uma sprint:
- Mantenha chaves consistentes e previsíveis (escolha um estilo de nomeação e siga)
- Prefira identificadores estáveis (não faça clientes dependerem da posição em arrays)
- Use timestamps ISO 8601 (por exemplo,
2025-12-26T10:15:00Z) - Distinga “faltando” vs “vazio” vs
nulle documente sua escolha - Versione com cuidado (adicione campos livremente; remova/renomeie apenas com plano)
- Valide nas bordas (validação no servidor; checagens de sanidade no cliente)
- Retorne erros úteis (códigos legíveis por máquina mais texto para humanos)
Continue aprendendo
Se quiser se aprofundar, navegue por guias relacionados em /blog — especialmente tópicos como validação de schema, versionamento de API e projetar payloads para compatibilidade a longo prazo.
Perguntas frequentes
O que é JSON em termos simples?
JSON é um formato de texto simples para enviar dados estruturados. Ele usa objetos com campos nomeados, arrays, strings, números, booleanos e nulo.
O que Douglas Crockford fez pelo JSON?
Douglas Crockford deu o nome ao JSON, documentou-o com clareza e o promoveu como um formato de dados pequeno que muitas linguagens de programação poderiam usar. Ele ajudou a transformar uma convenção útil em um padrão compartilhado.
Por que o JSON se tornou tão comum?
JSON se popularizou porque é compacto, legível e fácil de interpretar por navegadores e servidores. Sua estrutura também corresponde de perto aos objetos e arrays que as aplicações já usam.
Como o JSON funciona com APIs?
Uma API costuma enviar JSON no corpo da solicitação ou da resposta. O HTTP lida com a solicitação, o código de status e os cabeçalhos, enquanto o JSON descreve os próprios dados.
O que significa Content-Type application/json?
Envie o cabeçalho Content-Type: application/json quando o corpo de uma solicitação ou resposta HTTP contiver JSON. Ele informa ao sistema que o recebe como interpretar o corpo.
Quando devo usar JSON em vez de XML?
Use JSON para a maioria dos dados de aplicações, como usuários, pedidos, configurações e respostas de API. Escolha XML quando precisar de marcação no estilo de documentos, texto e tags misturados ou tiver de trabalhar com uma integração baseada em XML.
JSON é o mesmo que um objeto JavaScript?
Não. JSON exige aspas duplas ao redor de nomes de campos e valores de texto, não permite comentários e rejeita vírgulas finais. Um objeto JavaScript pode usar uma sintaxe que não é válida em JSON.
Como devo armazenar datas e valores monetários em JSON?
Use strings para marcas de tempo, geralmente no formato ISO 8601. Armazene valores monetários e IDs inteiros muito grandes como strings quando a precisão for importante, pois o JSON tem apenas um tipo numérico.
Como projetar um JSON que não quebre os clientes mais tarde?
Escolha um estilo de nomenclatura, mantenha os tipos dos campos estáveis e adicione campos opcionais em vez de renomear ou remover os existentes. Dê aos erros uma estrutura consistente para que todos os clientes possam tratá-los da mesma forma.
Como posso lidar com JSON de forma segura?
Use um analisador de JSON e valide os dados recebidos antes que sua aplicação os utilize. Não use eval e evite registrar payloads completos que possam conter senhas, tokens ou dados pessoais.