Leer configuraciones de un archivo JSON en c#
Ariel Alvarado | Mayo 10, 2021
Primero crearemos un nuevo proyecto, una aplicación de consola (.NET framework 4.7.1), le damos un nombre cualquiera y aceptamos.
Lo primero que haremos es agregar dos paquetes con NuGet:
- Microsoft.Extensions.Configuration.Binder ()
- Microsoft.Extensions.Configuration.Json
Los pasos para agregar paquetes son:
- Click derecho en el nombre de nuestro proyecto en el explorador de soluciones.
- Seleccionamos Administrar paquetes NuGet....
- Seleccionamos el paquete a instalar.
- Click en instalar.
Ojo que estos pasos deben repetirse para cada paquete.
Ahora, agregamos un archivo JSON al proyecto. Para el ejemplo lo llamaré config.json pero puede ser cualquier otro nombre. El contenido del archivo será:
{
"configuraciones": {
"atributoCadena": "config cadena",
"atributoBoolean": true,
"atributoNumerico": 14
}
}Con el archivo JSON ya creado, añadiremos una clase con los atributos que queremos cargar. Cabe hacer notar que las propiedades en la clase tienen el mismo nombre que en el archivo JSON.
public class Configuraciones
{
public string atributoCadena { get; set; }
public bool atributoBoolean { get; set; }
public int atributoNumerico { get; set; }
}Ahora viene la parte interesante, leeremos el archivo de configuraciones y cargaremos los valores a la clase creada anteriormente, veamos cómo:
static void Main(string[] args)
{
var configurationBuilder = new ConfigurationBuilder()
// leemos el archivo config.json, esto significa que el archivo debe estar en el build
// optional indica si el archivo es opcional, lanza un error si el archivo no se encuentra
// reloadOnChange permite recargar el archivo si es modificado
.AddJsonFile("config.json", optional: false, reloadOnChange: false)
.Build();
// la sección del archivo que buscamos se llama configuraciones (ver archivo json)
var seccion = configurationBuilder.GetSection("configuraciones");
// obtenemos las configuraciones en la clase que creamos anteriormente
var configuraciones= seccion.Get<Configuraciones>();
Console.WriteLine("Configuraciones leídas del archivo:");
Console.WriteLine("Valor Cadena:" + configuraciones.atributoCadena);
Console.WriteLine("Valor Boolean:" + configuraciones.atributoBoolean);
Console.WriteLine("Valor Numérico:" + configuraciones.atributoNumerico);
Console.ReadLine();
}Nota importante: si hacemos correr el proyecto en este momento, un error de archivo no encontrado se lanzará porque el archivo config.json¨no se copia a la carpeta build por defecto. Arreglemos eso, simplemente hacemos click en el archivo, propiedades avanzadas y seleccionamos Copiar en el directorio de salida: Copiar siempre.
Ahora si podemos hacer correr el proyecto, ya era hora. El resultado esperado es:
Y eso es todo por ahora, keep coding!!!