JSON: o que é, estrutura de dados e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-03-08 Tempo de leitura: 8 min

JSON (JavaScript Object Notation) é um formato de intercâmbio de dados baseado em texto, fundamentado na sintaxe de objetos JavaScript. É utilizado em toda parte: desde APIs REST e arquivos de configuração até armazenamento de dados em bancos de dados e aplicações móveis. De acordo com o site oficial do JSON, o formato é independente de linguagem e suportado por praticamente todas as plataformas modernas. JSON tornou-se o padrão de facto para transferência de dados entre cliente e servidor.

Principais pontos

  • JSON — um formato de texto leve para dados estruturados baseado na sintaxe JavaScript
  • Seis tipos de dados — string, número, booleano, null, array e objeto para quaisquer estruturas
  • Universalidade — suportado por todas as linguagens de programação e plataformas
  • API REST — o principal formato para troca de dados em aplicações web e móveis
  • Legibilidade humana — sintaxe simples fácil de ler e editar sem ferramentas

O que é JSON?

JSON é um formato de texto para representar dados estruturados, baseado na sintaxe JavaScript. Apesar das suas origens em JavaScript, o formato é completamente independente de linguagem — existem analisadores e serializadores para todas as linguagens de programação populares.

A história do JSON começou no início dos anos 2000, quando Douglas Crockford extraiu um subconjunto da sintaxe JavaScript para intercâmbio de dados. Em 2013, o formato foi padronizado como ECMA-404, e posteriormente como ISO/IEC 21778:2017. O nome significa JavaScript Object Notation.

A principal vantagem do JSON é a sua sintaxe minimalista. Apenas seis tipos são usados para descrever dados: string, número, booleano, null, array e objeto. Isso é suficiente para representar qualquer estrutura de dados usada em aplicações.

Onde JSON é usado

  • API REST — o principal formato para requisições e respostas entre servidor e cliente
  • Arquivos de configuração — package.json, tsconfig.json, .prettierrc
  • Bancos de dados — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Aplicações móveis — armazenamento de configurações, cache de dados
  • Tecnologias web — WebSocket, Server-Sent Events, localStorage

Sintaxe e tipos de dados JSON

A sintaxe JSON é extremamente simples: os dados são representados como pares chave-valor, onde a chave é uma string entre aspas duplas e o valor é um dos seis tipos básicos. Objetos são delimitados por chaves, arrays por colchetes. Strings devem usar aspas duplas; aspas simples não são permitidas.

Números em JSON podem ser inteiros ou de ponto flutuante, positivos ou negativos, com notação exponencial. Valores booleanos são representados pelos literais true e false, e a ausência de valor por null. Arrays contêm um conjunto ordenado de valores de qualquer tipo, incluindo arrays e objetos aninhados.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "suporte a aninhamento"
  }
}
Tipo Exemplo Descrição
String “texto” Entre aspas duplas, com sequências de escape
Número 42 Inteiro, ponto flutuante, exponencial
Booleano true true ou false — sem aspas
null null Ausência de valor
Objeto {} Conjunto não ordenado de pares chave-valor
Array [] Lista ordenada de valores

JSON em API REST

JSON é o principal formato de intercâmbio de dados para APIs REST no desenvolvimento móvel e web. O servidor envia JSON no corpo da resposta, o cliente no corpo da requisição. O cabeçalho Content-Type padrão para JSON é application/json.

APIs REST modernas usam JSON para transmitir todos os tipos de dados: desde listas simples até estruturas aninhadas complexas com relações entre entidades. Bibliotecas cliente (como Axios em JavaScript ou Retrofit no Android) serializam e desserializam JSON automaticamente, libertando o desenvolvedor da análise manual.

Uma vantagem importante do JSON em APIs REST é a capacidade de transferência parcial de dados (resposta parcial) através de parâmetros de consulta, bem como o suporte a recursos aninhados sem requisições adicionais ao servidor.

Análise JSON em plataformas móveis

A análise JSON em plataformas móveis é realizada usando ferramentas integradas. Android usa Gson do Google ou Moshi do Square, iOS usa o protocolo Codable com JSONDecoder. Cada plataforma fornece ferramentas convenientes para converter JSON em objetos nativos e vice-versa.

JSON no Android (Kotlin)

No Android, a abordagem popular usa Gson ou Moshi. Basta definir uma classe de dados com anotações @SerializedName e chamar fromJson para desserialização. A biblioteca mapeia automaticamente os nomes dos campos JSON para as propriedades da classe.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON no iOS (Swift)

No iOS, é usado o protocolo integrado Codable com JSONDecoder. A estrutura de dados é declarada como um struct em conformidade com Codable, após o que o JSON é analisado com uma única linha. JSONEncoder realiza a serialização reversa — converte um objeto em JSON para envio ao servidor.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: comparação de formatos

JSON e XML são os dois principais formatos para transmitir dados estruturados. JSON vence em simplicidade e desempenho, XML em rigor e validação. A escolha entre eles depende dos requisitos do projeto: APIs REST usam mais frequentemente JSON, documentos complexos com esquemas usam XML.

XML requer tags de fecho para cada elemento, aumentando o tamanho dos dados em 2-3 vezes em comparação com JSON. Ao mesmo tempo, XML suporta espaços de nomes, esquemas XSD, atributos e transformação XSLT, tornando-o mais poderoso para gestão de documentos e integração de sistemas empresariais.

Característica JSON XML
Sintaxe Minimalista, chave-valor Baseada em tags, abertura e fecho
Tamanho dos dados Compacto 2-3 vezes maior que JSON
Tipos de dados Seis tipos básicos Apenas texto, tipos via esquemas
Validação Não incorporada, via JSON Schema XSD — rigorosa e madura
Espaços de nomes Nenhum Suporte completo a namespace
Velocidade de análise Alta Menor devido à complexidade

Exemplos de trabalho com JSON

Os exemplos demonstram operações típicas com JSON no desenvolvimento móvel: análise de respostas de API, criação de JSON para envio e processamento de estruturas aninhadas. Compreender estes padrões é essencial para qualquer desenvolvedor de aplicações móveis.

Serialização de um objeto para JSON

Em JavaScript, JSON.stringify converte um objeto numa string JSON. O segundo argumento pode ser um array de chaves para serialização seletiva ou uma função de substituição. O terceiro argumento define a indentação para formatação.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

Análise de JSON aninhado

Em Kotlin com a biblioteca Moshi, objetos JSON aninhados são tratados através de classes de dados aninhadas. A anotação @Json especifica o nome do campo JSON se diferir do nome da propriedade da classe. Arrays são representados como List com o tipo do elemento.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: validação de estrutura

JSON Schema é uma linguagem para descrever a estrutura de um documento JSON, semelhante ao XSD para XML. Usando JSON Schema, pode especificar campos obrigatórios, tipos de dados, intervalos de valores, padrões de strings e estrutura aninhada. A validação do esquema deteta erros de dados antes de serem processados na aplicação.

JSON Schema é amplamente usado em OpenAPI (Swagger) para documentar APIs REST, em formulários de validação de dados de entrada e em testes. O ficheiro de esquema é ele próprio um documento JSON, permitindo que analisadores JSON padrão o leiam. Existem validadores online e bibliotecas para todas as linguagens de programação populares.

No desenvolvimento móvel, JSON Schema é usado para validar respostas do servidor durante testes e para verificar ficheiros de configuração. Bibliotecas como network-validator no Android e json-schema-validator permitem incorporar a validação diretamente no processo de desenvolvimento, prevenindo erros em fases iniciais.

Perguntas frequentes

Que tipos de dados o JSON suporta?

JSON suporta seis tipos: string (entre aspas duplas), número (inteiro e ponto flutuante), booleano (true/false), null, objeto (pares chave-valor em {}) e array (lista de valores em []). Isso é suficiente para qualquer estrutura de dados em aplicações.

Podem usar-se comentários em JSON?

Não, o padrão JSON não suporta comentários. Se precisar de comentários, use JSON5 (JSON estendido) ou adicione um campo de descrição, por exemplo “_comment”: “explicação”. Algumas ferramentas, como o VS Code, suportam comentários em ficheiros JSON de configuração, mas isto é uma extensão não padrão.

Como o JSON difere do JSONB no PostgreSQL?

JSONB é um formato de armazenamento binário para JSON no PostgreSQL. Ao contrário do JSON textual, JSONB é mais rápido de processar, suporta indexação (índices GIN) e garante unicidade de chaves. No entanto, JSONB ocupa mais espaço em disco devido aos metadados adicionados.

Como verificar se JSON é válido?

Use JSONLint (jsonlint.com) para validação rápida, o JSON.parse() incorporado em JavaScript com try-catch, ou plugins de IDE. A validação inclui verificar aspas corretas, fecho de parênteses e conformidade de tipos. Para esquemas complexos, use JSON Schema Validator.

Qual é o tamanho máximo de um ficheiro JSON?

Não há limite na especificação JSON. Na prática, o tamanho é limitado pela memória do dispositivo e pelas capacidades do analisador. Para aplicações móveis, recomenda-se não exceder 1-2 MB por resposta, e para dados grandes usar paginação ou transmissão em fluxo.

Resumo

  • JSON — um formato de texto minimalista com seis tipos de dados para trocar informação estruturada
  • Independência de linguagem — analisadores JSON existem para todas as linguagens de programação populares
  • API REST usa JSON como formato padrão para requisições e respostas em aplicações móveis
  • Análise é realizada com ferramentas integradas: Gson/Moshi no Android, Codable no iOS
  • JSON é 2-3 vezes mais compacto que XML, mas inferior ao Protobuf em desempenho
  • Legibilidade humana — a sintaxe é fácil de ler e depurar sem ferramentas especiais
  • JSON Schema — uma ferramenta adicional para validar estrutura e tipos de dados

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também