aprendendo_lua

Codificação/decodificação de JSON

Este projeto cobre a codificação e a decodificação básicas de JSON sem a necessidade de bibliotecas externas.

O codificador escapa \, " e os caracteres de controle (\n, \t, \r, \b, \f; os demais controles viram \u00XX). O decodificador interpreta as sequências de escape básicas (\", \\, \/, \n, \t, \r, \b, \f). Os testes de roundtrip estão em principal.lua.

O decodificador rejeita sobras após o valor (123abc), vírgulas finais ([1,2,], {"a":1,}) e chaves de objeto que não sejam strings; o codificador lança erro para NaN e ±infinito (sem representação em JSON) e para tabelas cíclicas (que referenciam a si mesmas). O rigor do decodificador tem limites conhecidos — veja abaixo.

Limitações conhecidas

Esta implementação é didática e simplificada. As limitações abaixo permanecem de propósito — para uso em produção prefira uma biblioteca madura (ex.: dkjson, lua-cjson):