tincho   07-05-2021, 00:15
#1
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.
Última modificación: 07-05-2021, 02:04 por tincho.

1 Saludo.
Harpo   14-05-2021, 09:26
#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: 7)
tincho   14-05-2021, 11:11
#3
Gracias Harpo. Lo estudiaré.

1 Saludo.
tincho   26-05-2021, 13:01
#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"
Código:
    sConfig = File.Load(sFile)
    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
[code]
Saludos.
Última modificación: 26-05-2021, 13:11 por tincho.

1 Saludo.
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.