JSON
Los valores jsn representan objetos JSON con soporte nativo para propiedades anidadas, listas y métodos utilitarios.
Declaración
Sección titulada «Declaración»jsn var persona = { nombre: "Ana", datos_personales: { fecha_nacimiento: "1998-05-15", dpi: "1234567890101" }, direcciones: [ { tipo: "casa", direccion: "Ciudad" }, { tipo: "trabajo", direccion: "Antigua" } ], telefonos: ["555-1234", "555-5678"], activo: verdadero}Acceso a propiedades
Sección titulada «Acceso a propiedades»- Por punto:
persona.nombre - Por índice o clave con corchetes:
persona["datos_personales"].dpi - Índices en listas anidadas:
persona.direcciones[0].direccion
Métodos frecuentes
Sección titulada «Métodos frecuentes»| Método | Descripción |
|---|---|
contiene_clave(clave) | Verifica si la propiedad existe. |
claves() | Devuelve una lista de las claves de primer nivel. |
valores() | Devuelve una lista de los valores. |
establecer(clave, valor) | Asigna o crea una propiedad. |
eliminar(clave) | Elimina una propiedad y devuelve el valor eliminado. |
fusionar(otro_json) | Combina propiedades (las existentes se sobrescriben). |
texto() | Serializa sin formato. |
texto_formateado() | Serializa con indentación. |
Los métodos mutadores requieren que el jsn se declare con var.
Ejemplo de uso
Sección titulada «Ejemplo de uso»jsn var persona = { nombre: "Ana", datos_personales: { fecha_nacimiento: "1998-05-15", dpi: "1234567890101", peso: 65.5, altura: 1.70, genero: "Femenino", nacionalidad: "Guatemalteca", estado_civil: "Soltera" }, direcciones: [ { tipo: "casa", direccion: "123 Calle Principal, Ciudad" }, { tipo: "trabajo", direccion: "456 Avenida Secundaria, Ciudad" } ], telefonos: ["555-1234", "555-5678"], activo: verdadero}
persona.establecer("apellido", "Gómez")log tiene_dpi = persona.contiene_clave("dpi")
si (no tiene_dpi) { persona.establecer("dpi", "0000000000000")}
// Eliminar propiedadpersona.eliminar("activo")
// Fusionar con otro JSONjsn var otra_persona = { apellido: "Gómez", edad: 30, activo: falso}persona.fusionar(otra_persona)
// Serializartexto persona_a_texto = persona.texto()texto persona_a_texto_formateado = persona.texto_formateado()consola.mostrar(persona_a_texto_formateado)Conversión desde texto
Sección titulada «Conversión desde texto»jsn configuracion = "{\"puerto\":8080,\"debug\":true}".jsn()Si la cadena no es JSON válido se lanza una excepción, por lo que conviene envolver la operación en intentar y capturar.
Buenas prácticas
Sección titulada «Buenas prácticas»- Declara los
jsnque deban modificarse con la palabravar. - Usa
claves()yvalores()para iterar sobre propiedades en combinación con bucles. - Restringe el acceso a rutas del sistema de archivos mediante
quetzal.jsoncuando importes módulos que manipulan JSON proveniente de archivos externos.