Codificar tablas en JSON
Serialice datos de Lua
Codificar tablas en JSON es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
Conceptos básicos de la codificación
La codificación es el proceso inverso a la decodificación: convierte una tabla de Lua en una cadena JSON. Llame a json.encode(table).
El resultado es una cadena de una sola línea que puede escribir en un archivo o enviar por la red.
local json = require("dkjson")
local t = { name = "Leo", age = 9 }
print(json.encode(t))Objetos frente a arrays
La forma en que se codifica una tabla de Lua depende de sus claves. Una tabla con claves enteras consecutivas desde 1 se convierte en un array JSON.
Una tabla con claves de cadena se convierte en un objeto JSON. Debe evitar las tablas mixtas porque son ambiguas.
local json = require("dkjson")
print(json.encode({ 1, 2, 3 })) -- [1,2,3]
print(json.encode({ a = 1, b = 2 })) -- {"a":1,"b":2}Formateo legible
De forma predeterminada, JSON es compacto. dkjson puede aplicar sangría a la salida para mejorar su legibilidad si se pasa una tabla de opciones con indent = true.
La salida con formato es ideal para archivos de configuración que editarán las personas.
local json = require("dkjson")
local t = { name = "Ann", roles = { "dev", "lead" } }
print(json.encode(t, { indent = true }))Codificación de números y booleanos
Los números y booleanos de Lua se codifican directamente en sus equivalentes de JSON. Tanto los enteros como los números de coma flotante se convierten en números JSON.
local json = require("dkjson")
local t = { count = 5, ratio = 1.5, active = true }
print(json.encode(t))El problema de nil
No puede almacenar nil en una tabla para representar JSON null, porque asignar nil elimina la clave por completo.
Para emitir un null literal, utilice el sentinel de la biblioteca json.null como valor.
local json = require("dkjson")
local t = { middle = json.null }
print(json.encode(t)) -- {"middle":null}Los arrays dispersos causan problemas
Si una secuencia tiene un hueco, por ejemplo, si el índice 2 es nil, Lua deja de tratarla como un array limpio. La codificación puede detenerse en el hueco o comportarse de forma inesperada.
Mantenga los índices de los arrays contiguos y empezando en 1 para obtener arrays JSON predecibles.
local json = require("dkjson")
local t = { [1] = "a", [3] = "c" } -- gap at 2
print(json.encode(t)) -- unreliableEscritura de JSON en un archivo
Para conservar los datos, codifique la tabla en una cadena y escriba esa cadena en un archivo.
Así puede guardar ajustes, puntuaciones o cualquier estado estructurado.
local json = require("dkjson")
local data = { theme = "dark", volume = 8 }
local f = io.open("settings.json", "w")
f:write(json.encode(data, { indent = true }))
f:close()Una tabla vacía se convierte en un objeto por defecto
Una tabla vacía de Lua {} no tiene claves, por lo que dkjson la codifica como un objeto vacío {} de forma predeterminada, no como un array.
Si necesita un array vacío, dkjson le permite etiquetar la tabla; de lo contrario, el tipo es ambiguo.
local json = require("dkjson")
print(json.encode({})) -- {}El orden de las claves no está garantizado
Las tablas de Lua no tienen un orden inherente para las claves de tipo string, por lo que el orden de los campos en el JSON codificado puede variar.
No dependa del orden de los campos; los consumidores de JSON deben buscar las claves por nombre, no por posición.
Consistencia del viaje de ida y vuelta
La codificación seguida de la decodificación debería producir una tabla equivalente. Este viaje de ida y vuelta es una buena forma de probar el manejo de los datos.
local json = require("dkjson")
local orig = { a = 1, list = { 2, 3 } }
local copy = json.decode(json.encode(orig))
print(copy.a, copy.list[2])Codificación con cjson
lua-cjson también ofrece encode. Es más rápido, pero tiene menos opciones de formato y genera errores en lugar de devolverlos.
Para obtener una salida con sangría y formato legible, dkjson suele ser la opción más sencilla.
local cjson = require("cjson")
local s = cjson.encode({ ok = true, n = 42 })
print(s)Comprobación rápida
Compruebe cuánto domina la codificación de tablas de Lua.
Resumen
La codificación convierte las tablas de Lua en cadenas JSON. Las secuencias con claves enteras se convierten en arrays y las tablas con claves de tipo string se convierten en objetos.
Utilice json.null para los valores null literales, mantenga los arrays contiguos y pase indent = true para obtener una salida legible. A continuación trabajará con datos profundamente anidados.
Preguntas frecuentes
¿La lección «Codificar tablas en JSON» es gratis?
Sí — el texto completo de «Codificar tablas en JSON» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Codificar tablas en JSON»?
Serialice datos de Lua Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Codificar tablas en JSON»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Por qué JSON
- Decodificar JSON en tablas
- Codificar tablas en JSON
- Gestionar datos anidados