.Net Core - 从 JSON 文件中获取数组
.NetCore - Get Arrays from JSON file
我需要从 asp.net 核心中的 configuration.json 文件中获取数组。
我创建了一个 API 从配置文件中获取一个部分,但我什么也没得到。
请帮我找出答案!
这是 configuration.json 文件。
"Settings": {
"Standards": [ "LKG", "UKG", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "COL" ],
"PaymentModes": [ "CASH", "DD", "TRANSFER", "RTGS", "NEFT", "CC", "NB" ],
"FeeTypes": [ "SCHOOL FEE", "HOSTEL FEE", "TRANSPORTATION FEE", "WELCOME PACK FEE", "TOUR FEE", "COACHING FEE", "OTHER FEE" ],
"Installments": [ "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" ],
"FinancialInstitutes": ["FEDERAL","ICICI","PAYU","AXIS","AXISRTGS","PAYTM"]
}
这里是api。
[HttpGet]
[AllowAnonymous]
[Route("Settings")]
public List<string> GetSettings()
{
var settings = Configuration.GetSection("Settings").Get<List<string>>();
return settings;
}
这里是启动class。
public class Startup
{
private readonly string _contentRootPath;
public IWebHostEnvironment env;
public IConfiguration Configuration { get; }
public Startup(IWebHostEnvironment env)
{
_contentRootPath = env.ContentRootPath;
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("configuration.json", optional: true, reloadOnChange: true)
.AddJsonFile($"configuration.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
this.env = env;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfigurationRoot>(provider => { return (IConfigurationRoot)Configuration; }); services.AddMvc()
.AddControllersAsServices();
services.AddHttpContextAccessor();
}
}
首先,尝试创建一个 class 作为您的“设置”部分,例如:
public class Settings
{
public List<string> Standards {get; set;}
public List<string> PaymentModes {get; set;}
public List<string> FeeTypes {get; set;}
public List<string> Installments {get; set;}
public List<string> FinancialInstitutes {get; set;}
}
然后按如下方式更改您的获取方法:
public Settings GetSettings()
{
var settings = new Settings();
Configuration.Bind("Settings", settings)
return settings;
}
我在启动 class 中为配置赋予了单例依赖性,这奏效了。
这就是问题所在。我刚刚修改了我的代码,其中首先获取所有键(数组)然后在 foreach 循环中我通过一个一个地获取的键获取数组的值。
public Dictionary<string, List<string>> GetSettings()
{
var response = new Dictionary<string, List<string>>();
var settings = Configuration.GetSection("Settings").GetChildren().Select(x => x.Key).ToList();
foreach (var setting in settings)
{
response.Add(setting, Configuration.GetSection($"Settings:{setting}").Get<List<string>>());
}
return response;
}
我需要从 asp.net 核心中的 configuration.json 文件中获取数组。 我创建了一个 API 从配置文件中获取一个部分,但我什么也没得到。 请帮我找出答案! 这是 configuration.json 文件。
"Settings": {
"Standards": [ "LKG", "UKG", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "COL" ],
"PaymentModes": [ "CASH", "DD", "TRANSFER", "RTGS", "NEFT", "CC", "NB" ],
"FeeTypes": [ "SCHOOL FEE", "HOSTEL FEE", "TRANSPORTATION FEE", "WELCOME PACK FEE", "TOUR FEE", "COACHING FEE", "OTHER FEE" ],
"Installments": [ "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" ],
"FinancialInstitutes": ["FEDERAL","ICICI","PAYU","AXIS","AXISRTGS","PAYTM"]
}
这里是api。
[HttpGet]
[AllowAnonymous]
[Route("Settings")]
public List<string> GetSettings()
{
var settings = Configuration.GetSection("Settings").Get<List<string>>();
return settings;
}
这里是启动class。
public class Startup
{
private readonly string _contentRootPath;
public IWebHostEnvironment env;
public IConfiguration Configuration { get; }
public Startup(IWebHostEnvironment env)
{
_contentRootPath = env.ContentRootPath;
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("configuration.json", optional: true, reloadOnChange: true)
.AddJsonFile($"configuration.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
this.env = env;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfigurationRoot>(provider => { return (IConfigurationRoot)Configuration; }); services.AddMvc()
.AddControllersAsServices();
services.AddHttpContextAccessor();
}
}
首先,尝试创建一个 class 作为您的“设置”部分,例如:
public class Settings
{
public List<string> Standards {get; set;}
public List<string> PaymentModes {get; set;}
public List<string> FeeTypes {get; set;}
public List<string> Installments {get; set;}
public List<string> FinancialInstitutes {get; set;}
}
然后按如下方式更改您的获取方法:
public Settings GetSettings()
{
var settings = new Settings();
Configuration.Bind("Settings", settings)
return settings;
}
我在启动 class 中为配置赋予了单例依赖性,这奏效了。 这就是问题所在。我刚刚修改了我的代码,其中首先获取所有键(数组)然后在 foreach 循环中我通过一个一个地获取的键获取数组的值。
public Dictionary<string, List<string>> GetSettings()
{
var response = new Dictionary<string, List<string>>();
var settings = Configuration.GetSection("Settings").GetChildren().Select(x => x.Key).ToList();
foreach (var setting in settings)
{
response.Add(setting, Configuration.GetSection($"Settings:{setting}").Get<List<string>>());
}
return response;
}