CodeGym /Cursos /JAVA 25 SELF /Fundamentos de JSON: estrutura, sintaxe, vantagens

Fundamentos de JSON: estrutura, sintaxe, vantagens

JAVA 25 SELF
Nível 46 , Lição 0
Disponível

1. O que é JSON (JavaScript Object Notation)?

JSON (lê-se como “djei-son”, não “zhé-son”!) significa JavaScript Object Notation. Apesar da palavra “JavaScript” no nome, JSON é um formato universal, suportado por praticamente todas as linguagens de programação, incluindo Java.

JSON foi criado por Douglas Crockford no início dos anos 2000 como uma forma simples de troca de dados entre o navegador e o servidor. Antes dele, predominava o XML — verboso e sobrecarregado de tags.

JSON acabou sendo mais compacto, simples e fácil de ler “a olho nu”. Rapidamente se tornou o padrão de fato para a troca de dados entre cliente e servidor, especialmente na web e em aplicativos móveis.

Por que o JSON se tornou padrão?

  • Sintaxe simples — fácil de escrever e ler manualmente.
  • Compacidade — sem tags e verborragia desnecessárias.
  • Legibilidade — até quem não é da área técnica entende o que está acontecendo.
  • Facilidade de parsing — a maioria das linguagens tem bibliotecas nativas/terceiras.
  • Entre linguagens — Java, Python, Kotlin etc. — todas suportam JSON.
  • Padrão para REST API — a esmagadora maioria dos APIs retorna JSON.

Comparação com XML

JSON XML
Legibilidade Muito alta Média (muitas tags)
Tamanho Compacto Mais pesado
Parsing Simples Exige mais esforço
Extensibilidade Suporta aninhamento Suporta aninhamento
Rigor Menos formal Permite descrever esquemas
Popularidade (2020+) Muito alta É usado, mas com menos frequência

Vitória do JSON em quase todos os pontos. Mesmo assim, XML continua relevante onde são necessários esquemas complexos, tipagem rígida, validação via XSD, suporte a comentários e atributos — por exemplo, em sistemas legados e software bancário.

Na prática, se você não está escrevendo software para um banco ou uma nave espacial — use JSON.

2. Sintaxe básica do JSON

Se você já trabalhou com objetos JavaScript ou dicionários em outras linguagens, a sintaxe vai soar familiar. Em Java não há um “dicionário” direto; esse papel é desempenhado pelas coleções de java.util, principalmente Map<K, V> (na maioria das vezes — HashMap<K, V>).

Elementos principais

  • Objetos — um conjunto de pares “chave: valor”, envoltos em { }.
  • Arrays — listas ordenadas de valores, envoltas em [ ].

Exemplo de objeto:

{
  "name": "Alice",
  "age": 25
}

Exemplo de array:

[1, 2, 3, 4, 5]

Exemplo de objeto com array:

{
  "students": [
    "Ivan",
    "Maria",
    "John"
  ]
}

Tipos de valores permitidos

No JSON você pode usar apenas os seguintes tipos de dados:

Tipo Exemplo Descrição
String
"hello"
Sempre entre aspas duplas
Número
123, 3.14, -7
Inteiros e decimais
Booleano
true, false
Valores lógicos
null
null
“Vazio”, ausência de valor
Objeto
{ ... }
Conjunto de pares “chave: valor”
Array
[ ... ]
Lista de valores

Atenção: as chaves em objetos — são sempre strings em aspas duplas, por exemplo "name". Aspas simples não são permitidas.

Exemplos de JSON válido

{
  "id": 1,
  "name": "Bob",
  "active": true,
  "scores": [10, 20, 30],
  "profile": {
    "email": "bob@example.com",
    "phone": null
  }
}

Exemplo de JSON inválido (erros)

{
  name: 'Bob', // Erro: chaves e strings — apenas com aspas duplas!
  age: 25,
}

3. Estrutura de dados: aninhamento de objetos e arrays

JSON suporta aninhamento profundo: objetos em objetos, arrays em objetos, objetos em arrays etc. É como uma matriosca.

Exemplo de documento JSON complexo

{
  "university": "Java University",
  "students": [
    {
      "name": "Ivan",
      "age": 20,
      "courses": ["Math", "Java", "English"]
    },
    {
      "name": "Maria",
      "age": 19,
      "courses": ["Biology", "Java", "Art"]
    }
  ],
  "active": true
}

No objeto raiz há um campo string "university", um campo booleano "active" e um array "students", que contém objetos de estudantes.

Esquema visual (diagrama de blocos)

{
  "chave": valor,
  "array": [
    { "chave": valor },
    { "chave": valor }
  ],
  "objeto": {
    "chave": valor
  }
}

4. Vantagens do JSON

Por que o JSON é tão popular?

  1. Lido facilmente por pessoas e máquinas — a estrutura é fácil de entender.
  2. Compacidade — mínimo de caracteres supérfluos.
  3. Facilidade de parsing — muitas bibliotecas para leitura/gravação.
  4. Padrão para REST API e aplicativos móveis — usado amplamente.
  5. Flexibilidade — descreve tanto listas simples quanto estruturas em árvore.
  6. Configs, preferências, armazenamento de dados — muito usado em configurações.
  7. Suporte em todas as linguagens — Java, Python, Go, Rust etc.

5. Prática: análise de exemplos de arquivos JSON

Exemplo 1: Lista de usuários

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  }
]

É um array em que cada elemento é um objeto de usuário.

Exemplo 2: Configuração de aplicativo

{
  "debug": true,
  "maxConnections": 100,
  "database": {
    "host": "localhost",
    "port": 5432,
    "user": "admin",
    "password": "qwerty"
  }
}

Um objeto com o objeto aninhado "database". Muito parecido com configurações reais de aplicativos.

Exemplo 3: Erros em JSON

{
  "name": "Alice",
  "age": 25,
} // Erro: vírgula extra antes da chave de fechamento!

Lembre-se: no JSON não pode haver vírgula após o último elemento.

Exemplo 4: Chaves sem aspas

{ name: "Alice", age: 25 } // Erro: as chaves devem estar entre aspas duplas!

6. Nuances úteis

Tabela: o que pode e o que não pode no JSON

Pode Não pode
"chave": "valor"
'chave': 'valor'
"chave": 123
"chave": 0123
"chave": null
"chave": undefined
"chave": true
"chave": True
"chave": [1, 2, 3]
"chave": [1, 2, 3,]

Comparação rápida entre JSON e objetos Java

Java JSON
int, double, boolean
Número, true/false
String
"string"
List<T>, array [valor1, valor2, ...]
Map<String, Object>
{ "chave": valor, ... }
null
null
Classe com campos { "campo": valor, ... }

Exemplo: classe Java e sua representação em JSON

public class Student {
    public String name;
    public int age;
}
{
  "name": "Alice",
  "age": 20
}

7. Erros típicos ao trabalhar com JSON

Erro nº 1: Aspas simples em vez de aspas duplas. JSON aceita apenas aspas duplas para chaves e strings.

{ 'name': 'Alice' } // Erro!

Erro nº 2: Vírgula sobrando. Não pode haver vírgula após o último elemento.

{ "name": "Alice", } // Erro!

Erro nº 3: Chaves sem aspas. As chaves sempre devem estar entre aspas duplas.

{ name: "Alice" } // Erro!

Erro nº 4: Números com zeros à esquerda. Tais números não são permitidos.

{ "age": 025 } // Erro!

Erro nº 5: Uso de undefined. No JSON não existe undefined; use null.

{ "value": undefined } // Erro!

Erro nº 6: True/False com inicial maiúscula. No JSON apenas true e false (minúsculas).

{ "active": True } // Erro!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION