Crear propiedades desde variables en un JSON con JavaScript



JavaScript y JSON definitivamente se aman... e interactuar entre ellos es algo completamenten natural. Crear estructuras de forma dinámica es algo completamente factible y natural, como los ejercicios de Nacho Algoritmea de Roberto Florez.

Muchas veces necesitamos crear un JSON pero que las propiedades sean variables y no valores fijos para poder que estos nombres nos sirvan como especia de indice. Al crear la estructura bajo este esquema es supremamente fácil obtener su información sin tener que hacer ciclos de búsqueda.

De una forma simple podemos crear objetos y propiedades variables para asignarles un valor.
var json_list = {}; /* Se crea un objeto como root del JSON */

var user = "pepito"; /* Se crea una variable y en ella se almacena el nombre de la propiedad */
json_list[user] = {}; /* Crea la nueva propiedad pepito como un objeto */

json_list[user].alert = {}; /* Crea la propiedad Alert en pepito como un objeto */
json_list[user].alert.time = 30; /* se puede asignar usando la variable */
json_list.pepito.alert.type = "sec"; /* o usando la nueva propiedad */

user = "juanito"; /* Se usa la misma variable pero ahora se le da un nuevo nombre */
json_list[user] = {}; /* Crea la nueva propiedad juanito como un objeto */

var alert = { "type": "sec", time: 60 }; /* Crea una variable Alert tipo objeto y en ella se almacenan las propiedades */
json_list[user].alert = alert; /* Crea la propiedad Alert en juanito y le asigna el objeto recien creado */
json_list[user].alert.type = "min"; /*Se modifica el typo de la alerta para juanito */
json_list.juanito.alert.time = 80; /*Se modifica el tiempo de la alerta para juanito */

// Convierte el objeto en una cadena JSON
var jsonobj = JSON.stringify(json_list);

Para ver el JSON que se ha creado automaticamente solo hace falta añadir el comando "console.log(jsonobj)" y verlo en la salida de la consola:
{"pepito":{"alert":{"time":"30","type":"sec"}},"juanito":{"alert":{"type":"sec","time":"80"}}} 

Ahora lo bueno de crear el JSON con la primera propiedad como el nombre de usuario, es que si luego queremos obtener los datos los podemos acceder fácilmente como si se tratase de una arreglo (y sus indices) sin necesidad de usar ciclos de búsqueda.
console.log(json_list["pepito"]);
console.log(json_list["pepito"]["alert"]["type"]);
console.log(json_list["juanito"]["alert"]["time"]); 
Sueter que JavaScript permite hacer de todo... y que existe StackOverflow por si las dudas.

Fuentes:
Create object using variables for property name
Encoding Javascript Object to Json string
JSON find in JavaScript

Comentarios

Entradas populares