[英]How to read nested loop json values from appsettings.json and assign to object
"SalesOrderFilters": {
"skip": 0,
"take": 0,
"sort": [
{
"sortBy": "productGroup",
"sortDirection": "Ascending"
}
],
"filters": [
{
"columnFilters": [
{
"field": "productGroup",
"operator": "eq",
"value": "CC05"
},
{
"field": "productGroup",
"operator": "eq",
"value": "CC07"
}
],
"logic": "or"
},
{
"columnFilters": [
{
"field": "specFileDate",
"operator": "lte",
"value": "6/26/2017 11:17:20 AM"
},
{
"field": "specFileDate",
"operator": "gte",
"value": "4/26/2017 11:17:20 AM"
}
],
"logic": "and"
},
{
"columnFilters": [
{
"field": "designSpecialIndicator",
"operator": "eq",
"value": "N"
}
],
"logic": "and"
},
{
"columnFilters": [
{
"field": "buMfgLocId",
"operator": "eq",
"value": "5"
}
],
"logic": "and"
},
{
"columnFilters": [
{
"field": "orderType",
"operator": "eq",
"value": "SO"
}
],
"logic": "and"
},
{
"columnFilters": [
{
"field": "buMfgLocation",
"operator": "contains",
"value": "lexi"
}
],
"logic": "and"
}
]
}
您應該查看選項模式。
選項模式使用類來提供對相關設置組的強類型訪問。 當配置設置被場景隔離到單獨的類中時,應用程序遵循兩個重要的軟件工程原則:
接口隔離原則 (ISP) 或封裝:依賴於配置設置的場景(類)僅依賴於它們使用的配置設置。 關注點分離:應用程序不同部分的設置不相互依賴或耦合。
只想分享我如何在我的應用程序上執行此操作(假設 appsettings.json 是您的默認配置文件):
public class ConfigHelper : IConfigHelper
{
private IConfiguration Configuration { get; }
public ConfigHelper(IConfiguration configuration)
{
Configuration = configuration;
}
public string GetAppSettings(string key)
{
return Configuration[key];
}
}
用法:
...
ConfigHelper.GetAppSettings("SalesOrderFilters:Skip");
...
或者這種方法:
創建一個類來表示您的配置:
public class SalesOrderFilters
{
public int Skip { get; set; }
public int Take { get; set; }
public List<Filters> Filters { get; set; }
...
}
public class Filter
{
public List<ColumnFilter> ColumnFilters { get; set; }
...
}
在您的 Startup.cs 中
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton(typeof(SalesOrderFilters), Configuration.GetSection("SalesOrderFilters").Get<SalesOrderFilters>());
...
}
然后你可以在你的控制器/服務類中注入這個對象:
public class MyController
{
private SalesOrderFilters _settings;
public MyController(SalesOrderFilters settings)
{
_settings = settings;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.