Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Alguien tiene hecho un "Settings" pero con JSONCollection?
#1
Question 

Hola amigos.
¿Alguien tiene hecho un "Settings" pero con JSONCollection?
Es que necesito mantener las claves con valores vacíos y Settings (que yo sepa) no lo hace.
Saludos.
    ¡Gracias!
#2

Saludos Tincho,

No sé si le servirá esto que subo. Es una prueba de concepto, yo uso un "Settings" en XML y estuve jugando con uno en JSON, está incompleto, solo realiza la lectura del fichero. A futuro quiero retomarlo, me pareció más sencillo que XML. He "limpiado" un poco el código para hacerlo más entendible.

La idea es tener dos ficheros de configuración, uno local y otro global. Permite parámetros de aplicación generales y particulares.
Lo que hay en el programa es:
  • Una clase PARAMETRO, básicamente contiene datos del parámetro: Scope (ámbito global o local), Sección (agrupo los parámetros), nombre, clave (código único de 4 dígitos), tipo (string - integer - ....) y el valor.
  • Una clase CONFIG, es una colección de parámetros y su gestión. Es quien hace la lectura de JSON. La Key del objeto "Collection" es la clave del parámetro.
  • Un módulo MODGEN. Es el arranque del programa, contiene la definición de constantes para "mapear" los códigos numéricos y hace una carga por defecto de la configuración.
  • Un formulario para visualizar parámetros y llamar a los procesos de carga. Estos procesos se llaman desde el evento "click" del combobox.
Además incluye los procesos de carga XML y los ficheros de configuración XML.

El formulario:

[Imagen: Z1RY9Ls.png]

El fichero JSON utilizado:
Código:
{"Global":
    {"ConfigJSON":[
        {"Database":[
            {"key":1000, "name": "DBType", "type": "string", "value": "sqlite3"},
            {"key":1001, "name": "DBCharset", "type": "string", "value": "UTF8"},
            {"key":1002, "name": "DBHostName", "type": "string", "value": "PruebaLocal"},
            {"key":1003, "name": "DBPort", "type": "integer", "value": "8000"},
            {"key":1004, "name": "DBDatabase", "type": "string", "value": "ConfigJSON.sqlite"},
            {"key":1005, "name": "DBUser", "type": "string", "value": null},
            {"key":1006, "name": "DBPassword", "type": "string", "value": null}
        ]},
        {"Mask":[
            {"key":1100, "name": "MaskDate", "type": "string", "value": "dd/mm/yyyy"},
            {"key":1101, "name": "MaskInteger", "type": "string", "value": "###0"},
            {"key":1102, "name": "MaskFloat", "type": "string", "value": "#,##0.00"},
            {"key":1103, "name": "MaskTime", "type": "string", "value": "hh:mm"},
            {"key":1104, "name": "ComaDecimal", "type": "string", "value": ","},
            {"key":1105, "name": "PuntoMiles", "type": "string", "value": "."},
            {"key":1106, "name": "Decimales", "type": "integer", "value": "-2"},
            {"key":1107, "name": "MaskMoney", "type": "string", "value": "$#,##0.00"}
        ]},
        {"Company":[
            {"key":9900, "name": "RazonSocial", "type": "string", "value": "Prueba S.L."},
            {"key":9901, "name": "CIF", "type": "string", "value": "B00000000"},
            {"key":9902, "name": "Direccion", "type": "string", "value": "Avenida de JSON 5"},
            {"key":9903, "name": "Poblacion", "type": "string", "value": "JSON de Abajo"},
            {"key":9904, "name": "CodigoPostal", "type": "string", "value": "99000"},
            {"key":9905, "name": "Provincia", "type": "string", "value": "Republica de JSON"},
            {"key":9906, "name": "Telefono", "type": "integer", "value": "999 999 999"},
            {"key":9907, "name": "Movil", "type": "string", "value": null},
            {"key":9950, "name": "Banco", "type": "string", "value": "El móvil es NULL"},
            {"key":9951, "name": "Oficina", "type": "string", "value": null},
            {"key":9952, "name": "Cuenta", "type": "string", "value": null},
            {"key":9953, "name": "SWIF", "type": "string", "value": null}
        ]}            
    ]}
}

Espero que le sirva.
Un saludo, Harpo.


.zip ConfigJSON.zip Tamaño: 48.89 KB  Descargas: 5
[-] Los siguientes 2 usuarios dicen gracias a Harpo por este post:
  • jguardon, tincho
    ¡Gracias!
#3

Gracias Harpo. Lo estudiaré.
    ¡Gracias!
#4

Hola Harpo, estudie el código que compartiste y tomo nota del método que sigues.
Por lo que veo la clase clsConfig  toma los parámetros iniciales desde un módulo llamado ModGen en el método _new() así que tal vez tenga que modificar un poco la clase para que sea de uso mas general. Hice un proyecto vacío y luego copie las clases clsConfig y clsParametro para aislar la parte de gestión de json.
Dentro de un tiempo tal vez vuelva a la carga con la clase para json ya que me parece que es el método mas prolijo para gestionarla. Por ahora estoy usando un archivo .json y una colección y JSONEncode y JSONDecode.
Gracias por el aporte de código.
Saludos.

El método que uso actualmente es el siguiente:
partiendo de un archivo sFile "/ruta/del/archivo.json"
GAMBAS
  1.     sConfig = File.Load(sFile)
  2.     jConfig = JSON.FromString(sConfig, True)


Donde jConfig es una "Collection" luego para el flujo dle programa leo, escribo, agrego o retiro datos y claves de esta colección y al final del proceso guardo  archivo.json
GAMBAS
  1. File.Save(sFile, JSON.Encode(jConfig))


Saludos.
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)