API JSON
Las utilidades para analizar y serializar JSON están disponibles bajo
ptool.json y p.json.
ptool.json.parse
v0.3.0- Introduced.
ptool.json.parse(input) analiza una cadena JSON y la convierte en un valor
Lua.
input(string, obligatorio): El texto JSON.- Devuelve: El valor Lua analizado. La raíz puede ser cualquier tipo JSON.
Asignación de tipos:
- Objeto JSON -> tabla Lua
- Array JSON -> tabla secuencial Lua (base 1)
- Cadena JSON -> cadena Lua
- Entero JSON que cabe en
i64-> entero Lua - Otro número JSON -> número Lua
- Booleano JSON -> booleano Lua
- JSON null -> Lua
nil
Comportamiento ante errores:
- Se produce un error si
inputno es una cadena. - Un error de sintaxis JSON produce un error cuyo mensaje incluye el detalle
del analizador de
serde_json.
Ejemplo:
local data = p.json.parse('{"name":"ptool","features":["json","repl"],"stars":42}')
print(data.name)
print(data.features[1])
print(data.stars)
ptool.json.stringify
v0.3.0- Introduced.
ptool.json.stringify(value[, options]) convierte un valor Lua en una cadena
JSON.
value(valor Lua compatible con JSON, obligatorio): El valor que se va a codificar.options(table, opcional): Opciones de serialización.options.pretty(boolean, opcional): Cuando estrue, genera JSON con formato legible. Por defecto esfalse.- Devuelve: La cadena JSON codificada.
Comportamiento:
- La salida por defecto es JSON compacto, sin espacios adicionales.
- La salida pretty usa JSON multilínea con indentación.
- Los valores deben ser compatibles con JSON. Funciones, threads, userdata y otros valores Lua no serializables producen un error.
Ejemplo:
local text = p.json.stringify({
name = "ptool",
features = {"json", "repl"},
stable = true,
}, { pretty = true })
print(text)
Notas:
- Los valores
nildentro de tablas Lua siguen el comportamiento de conversión serde demluay no se conservan como campos de objetos JSON. - La detección de array/objeto para tablas Lua sigue las reglas de conversión
serde de
mlua.