0Pricing
Lua Academy · Lección

Por qué JSON

Conceptos básicos del intercambio de datos

Por qué JSON es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 1 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.

¿Qué es JSON?

JSON (JavaScript Object Notation) es un formato de texto ligero para almacenar e intercambiar datos. Es legible para las personas e independiente del lenguaje.

Casi todas las API web, los archivos de configuración y las bases de datos utilizan JSON. Aprender a convertir entre JSON y tablas de Lua permite que sus scripts se comuniquen con el mundo exterior.

JSON se parece a Lua

Los objetos JSON utilizan llaves con pares clave-valor, mientras que los arrays utilizan corchetes. Esto se corresponde casi perfectamente con las tablas de Lua.

Un objeto JSON se convierte en una tabla de Lua con claves de cadena; un array JSON se convierte en una tabla de Lua con índices numéricos que empiezan en 1.

-- JSON text
-- {"name": "Ada", "age": 36}

-- Equivalent Lua table
local person = { name = "Ada", age = 36 }
print(person.name)

Lua no incluye JSON

A diferencia de algunos lenguajes, Lua estándar no incluye compatibilidad con JSON. Debe utilizar una biblioteca.

Las dos opciones más habituales son dkjson (Lua puro, fácil de instalar) y lua-cjson (una biblioteca rápida escrita en C). Ambas exponen las funciones encode y decode.

Cargar una biblioteca JSON

Puede cargar una biblioteca JSON con require, igual que cualquier otro módulo de Lua. La tabla devuelta contiene las funciones que necesita.

Aquí cargamos dkjson y lo asociamos a una variable local llamada json.

local json = require("dkjson")
-- now json.encode and json.decode are ready

Las dos operaciones principales

Con JSON solo hay dos operaciones que realizará: decode y encode.

Decoding convierte una cadena JSON en una tabla de Lua que puede leer. Encoding convierte una tabla de Lua de nuevo en una cadena JSON que puede enviar o guardar.

local json = require("dkjson")
local t = json.decode('{"ok": true}')  -- string -> table
local s = json.encode(t)                -- table -> string

Un ejemplo de decode

Cuando recibe texto JSON de un archivo o de una API, json.decode lo analiza y lo convierte en una tabla de Lua utilizable.

Después de decodificarlo, puede acceder a los campos con la sintaxis habitual de Lua.

local json = require("dkjson")
local text = '{"city": "Oslo", "temp": 7}'
local data = json.decode(text)
print(data.city, data.temp)

Un ejemplo de encode

Para crear JSON, complete una tabla de Lua y pásela a json.encode. El resultado es una cadena lista para escribir o transmitir.

local json = require("dkjson")
local book = { title = "Lua", pages = 328 }
local text = json.encode(book)
print(text)

Tipos de datos JSON

JSON admite un conjunto reducido de tipos: cadenas, números, valores booleanos, null, objetos y arrays.

Lua los representa mediante cadenas, números, valores booleanos, nil y tablas. Tenga en cuenta que JSON null no tiene un equivalente perfecto en Lua, lo que puede provocar sorpresas.

Por qué utilizar JSON en lugar de formatos personalizados

Podría inventar su propio formato de texto, pero JSON ya se entiende en todas partes. Los editores lo resaltan, los validadores lo comprueban y otros lenguajes lo analizan al instante.

Utilizar JSON hace que sus datos sean portátiles y que su código sea más fácil de depurar.

Casos de uso habituales

Utilizará JSON al llamar a API REST, leer archivos de configuración, almacenar resultados en caché o pasar datos entre procesos.

En todos los casos, el patrón es el mismo: decodificar el JSON entrante en una tabla, trabajar con ella y volver a codificarla cuando necesite enviarla.

local json = require("dkjson")
-- typical round trip
local data = json.decode(incoming)
data.seen = true
local out = json.encode(data)

Gestionar errores de decode

La decodificación puede fallar si el texto no es un JSON válido. dkjson devuelve el valor, una posición y un mensaje de error en lugar de detener la ejecución con un error.

Compruebe siempre si el primer valor devuelto es nil antes de utilizarlo.

local json = require("dkjson")
local data, pos, err = json.decode("{bad")
if not data then
  print("Invalid JSON:", err)
end

Comprobación rápida

Compruebe su comprensión de los conceptos básicos de JSON en Lua.

Resumen

JSON es un formato de datos universal que se corresponde perfectamente con las tablas de Lua. Lua estándar no incluye compatibilidad con JSON, por lo que debe cargar una biblioteca como dkjson o cjson.

Las dos operaciones principales son json.decode (de cadena a tabla) y json.encode (de tabla a cadena). A continuación, estudiará en detalle cómo decodificar JSON en tablas.

Preguntas frecuentes

¿La lección «Por qué JSON» es gratis?

Sí — el texto completo de «Por qué 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 «Por qué JSON»?

Conceptos básicos del intercambio de datos 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 1 de 4.

¿Cuánto tiempo toma la lección «Por qué 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

  1. Por qué JSON
  2. Decodificar JSON en tablas
  3. Codificar tablas en JSON
  4. Gestionar datos anidados
← Volver a Lua Academy