Conversor de Lua para JSON
Cola uma tabela Lua. Recebe JSON de volta.
O que essa ferramenta faz
Se já te caiu uma tabela Lua vinda de um config de jogo, de um script Redis ou de um handler OpenResty no nginx e você precisou dela em JSON, aqui sai numa colagem. Sem instalar json.lua ou dkjson só para serializar uma constante.
Tabelas Lua são meio traiçoeiras porque misturam parte array (chaves inteiras começando em 1) e parte hash (chaves string ou mistas) na mesma estrutura. O conversor detecta o formato: tabela 100% array vira array JSON, tabela 100% hash vira objeto JSON, e a tabela mista cai num objeto JSON com as chaves numéricas stringificadas. Isso bate com o que o manual de referência do Lua 5.4 descreve e com o que as libs JSON populares fazem.
Tabelas aninhadas descem quanto você quiser. nil vira null, true/false mapeiam direto, números continuam números (inteiros continuam inteiros). Strings com aspas simples, duplas ou colchetes longos ([[...]]) parseiam todas certo. Comentários (-- e --[[ ... ]]) são removidos.
Como usar
Três passos. Funciona pra tabela pequena e pra config gigante.
Cola seu Lua (ou experimenta o exemplo)
Joga sua tabela Lua no editor da esquerda. Tabela parte array, tabela parte hash, tabelas aninhadas ou várias declarações local x = {...} no topo — tudo passa.
Deixa a sintaxe Lua intacta. Chaves sem aspas (name = "..."), chaves entre colchetes (["foo-bar"] = ...) e comentários parseiam sem drama.
Clica em Converter
Aperta o botão verde Converter. A ferramenta caminha pela tabela, detecta array ou hash em cada nível e emite o JSON equivalente.
Copia o JSON
Copia o JSON indentado do painel da direita para um arquivo de config, uma chamada de API ou uma fixture de teste. Pronto.
Quando isso realmente ajuda
Migrar configs de jogo/engine
Várias engines (Love2D, Defold, addons de World of Warcraft) usam tabelas Lua para config. Quando o pipeline muda para ferramentas baseadas em JSON, a conversão sai num único passo.
Debug de handler OpenResty / Nginx
Montou um body de resposta como tabela Lua num script OpenResty — cola aqui para ver o JSON que o cliente vai receber, antes de redeployar.
Scripts Lua no Redis
Um script EVAL do Redis retorna uma estrutura complexa; o literal de tabela Lua é fácil de capturar dos logs. Converte pra JSON e compara com o que a aplicação enxerga.
Portar config pra outra linguagem
Saindo de uma ferramenta escrita em Lua para uma reescrita em Node ou Go. Converte as tabelas antigas de config em JSON como formato de migração.
Perguntas frequentes
Como ele decide entre array e objeto?
Mesma regra que json.lua usa: se a tabela só tem chaves inteiras consecutivas começando em 1, é array. Caso contrário, é objeto. Tabelas mistas (1, 2, "name") saem como objetos com as chaves numéricas stringificadas, porque arrays JSON não aceitam chaves nomeadas.
E o nil dentro de uma tabela?
Um valor nil remove aquela chave em Lua — o conversor segue a mesma regra e simplesmente omite chaves com valor nil na saída. Um nil solto (por exemplo local x = nil) vira null em JSON.
Ele aceita strings de colchete longo tipo <code>[[...]]</code>?
Sim. Strings de colchete longo (inclusive [==[...]==] com qualquer quantidade de sinais de igual) são parseadas e emitidas como strings JSON com o escape correto.
Posso colar várias tabelas?
Pode. Cada local name = {...} ou name = {...} no topo vira uma chave no JSON de saída. Tabelas anônimas no final recebem chaves numéricas. Nada é descartado em silêncio.
Meu código fica salvo?
Não — a gente manda para o backend para converter e não persiste nada. Mesmo assim, tira qualquer coisa sensível antes de colar.
Funciona com arquivos rockspec do LuaRocks?
Sim. Os arquivos rockspec são tabelas Lua no fundo, então convertem limpinho — útil para migrar metadados de dependências para um registro em formato JSON.
Outras ferramentas que podem te servir
Lua para JSON combina bem com o resto da caixa: