Comunidad Gambas-es
Alguien tiene hecho un "Settings" pero con JSONCollection? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forumdisplay.php?fid=3)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forumdisplay.php?fid=8)
+--- Tema: Alguien tiene hecho un "Settings" pero con JSONCollection? (/showthread.php?tid=400)



Alguien tiene hecho un "Settings" pero con JSONCollection? - tincho - 07-05-2021

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.


RE: Alguien tiene hecho un "Settings" pero con JSONCollection? - Harpo - 14-05-2021

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: 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.


[attachment=89]


RE: Alguien tiene hecho un "Settings" pero con JSONCollection? - tincho - 14-05-2021

Gracias Harpo. Lo estudiaré.


RE: Alguien tiene hecho un "Settings" pero con JSONCollection? - tincho - 26-05-2021

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.