Por que JSON
Fundamentos da troca de dados.
Por que JSON é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
O que é JSON?
JSON (JavaScript Object Notation) é um formato de texto leve para armazenar e trocar dados. Ele é legível por humanos e independente de linguagem.
Quase toda API da web, arquivo de configuração e banco de dados trabalha com JSON. Aprender a converter entre JSON e tabelas Lua permite que seus scripts se comuniquem com o mundo exterior.
JSON se parece com Lua
Os objetos JSON usam chaves com pares de chave e valor, enquanto os vetores usam colchetes. Isso corresponde quase perfeitamente às tabelas Lua.
Um objeto JSON se torna uma tabela Lua com chaves de texto; um vetor JSON se torna uma tabela Lua com índices numéricos começando em 1.
-- JSON text
-- {"name": "Ada", "age": 36}
-- Equivalent Lua table
local person = { name = "Ada", age = 36 }
print(person.name)Lua não tem JSON integrado
Ao contrário de algumas linguagens, a Lua padrão não vem com suporte a JSON. Você precisa usar uma biblioteca.
As duas opções mais comuns são dkjson (Lua pura, fácil de instalar) e lua-cjson (uma biblioteca C rápida). Ambas disponibilizam as funções encode e decode.
Carregando uma biblioteca JSON
Você carrega uma biblioteca JSON com require, assim como qualquer outro módulo Lua. A tabela retornada contém as funções de que você precisa.
Aqui, carregamos o dkjson e o associamos a uma variável local chamada json.
local json = require("dkjson")
-- now json.encode and json.decode are readyAs duas operações principais
Há apenas duas coisas que você faz com JSON: decode e encode.
Decodificar transforma um texto JSON em uma tabela Lua que você pode ler. Codificar transforma uma tabela Lua de volta em um texto JSON que você pode enviar ou salvar.
local json = require("dkjson")
local t = json.decode('{"ok": true}') -- string -> table
local s = json.encode(t) -- table -> stringUm exemplo de decodificação
Quando você recebe um texto JSON de um arquivo ou de uma API, json.decode o analisa e o transforma em uma tabela Lua utilizável.
Depois da decodificação, você acessa os campos com a sintaxe normal da Lua.
local json = require("dkjson")
local text = '{"city": "Oslo", "temp": 7}'
local data = json.decode(text)
print(data.city, data.temp)Um exemplo de codificação
Para criar JSON, preencha uma tabela Lua e passe-a para json.encode. O resultado é um texto pronto para ser gravado ou transmitido.
local json = require("dkjson")
local book = { title = "Lua", pages = 328 }
local text = json.encode(book)
print(text)Tipos de dados JSON
JSON aceita um pequeno conjunto de tipos: textos, números, valores booleanos, null, objetos e vetores.
Lua mapeia esses tipos para textos, números, valores booleanos, nil e tabelas. Observe que JSON null não tem um equivalente perfeito em Lua, o que pode causar surpresas.
Por que usar JSON em vez de formatos personalizados
Você poderia inventar seu próprio formato de texto, mas JSON já é compreendido em todos os lugares. Editores o destacam, validadores o verificam e outras linguagens o analisam instantaneamente.
Usar JSON torna seus dados portáteis e seu código mais fácil de depurar.
Casos de uso comuns
Você recorrerá ao JSON ao chamar APIs REST, ler arquivos de configuração, armazenar resultados em cache ou passar dados entre processos.
Em todos esses casos, o padrão é o mesmo: decodificar o JSON recebido em uma tabela, trabalhar com ele e depois codificá-lo novamente quando precisar enviá-lo.
local json = require("dkjson")
-- typical round trip
local data = json.decode(incoming)
data.seen = true
local out = json.encode(data)Lidando com erros de decodificação
A decodificação pode falhar se o texto não for um JSON válido. O dkjson retorna o valor, uma posição e uma mensagem de erro em vez de causar uma falha.
Verifique sempre se o primeiro valor retornado é nil antes de usá-lo.
local json = require("dkjson")
local data, pos, err = json.decode("{bad")
if not data then
print("Invalid JSON:", err)
endVerificação rápida
Teste sua compreensão dos fundamentos de JSON em Lua.
Recapitulação
JSON é um formato universal de dados que corresponde bem às tabelas Lua. A Lua padrão não tem suporte a JSON, então você carrega uma biblioteca como dkjson ou cjson.
As duas operações principais são json.decode (texto para tabela) e json.encode (tabela para texto). Em seguida, você aprenderá em detalhes a decodificar JSON em tabelas.
Perguntas Frequentes
A aula “Por que JSON” é grátis?
Sim — o texto completo de “Por que JSON” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “Por que JSON”?
Fundamentos da troca de dados. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Por que JSON”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.