07-23-2023, 08:36 AM
I was following some [examples for ASP.NET 5](
Here is relevant portion of `config.json`:
{
"ApplicationName" : "OwNextApp",
"AppSettings": {
"SiteTitle": "OwNext"
},
}
And relevant portion of `HomeController.cs`:
public IActionResult About()
{
var appNestedNameFailed = _config.Get("AppSettings.SiteTitle");
var appNestedNameSuccess = _config.Get("AppSettings:SiteTitle");
var appName = _config.Get("ApplicationName");
ViewBag.Message = string.Format(@"Your
APP NAME: {0};
APP NESTED NAME FAILED: {1};
APP NESTED NAME SUCCESS: {2}",
appName, appNestedNameFailed, appNestedNameSuccess);
return View();
}
Value for `appNestedNameFailed` is empty (my initial try before research). And `appNestedNameSuccess` has value; after I did research and found in tests for [Configuration](
// Assert
Assert.Equal("IniValue1", config.Get("IniKey1"));
Assert.Equal("IniValue2", config.Get("IniKey2:IniKey3"));
Can someone explain why is this the case? Why would it make sense to use `:` over `.`? From my interaction with JSON data usually `.` notation works fine, e.g. [How to access nested json data](
Also, I found similar [SO question](
[To see links please register here]
) and I got stumbled with how to properly read "nested" configuration values (if that is the proper term).Here is relevant portion of `config.json`:
{
"ApplicationName" : "OwNextApp",
"AppSettings": {
"SiteTitle": "OwNext"
},
}
And relevant portion of `HomeController.cs`:
public IActionResult About()
{
var appNestedNameFailed = _config.Get("AppSettings.SiteTitle");
var appNestedNameSuccess = _config.Get("AppSettings:SiteTitle");
var appName = _config.Get("ApplicationName");
ViewBag.Message = string.Format(@"Your
APP NAME: {0};
APP NESTED NAME FAILED: {1};
APP NESTED NAME SUCCESS: {2}",
appName, appNestedNameFailed, appNestedNameSuccess);
return View();
}
Value for `appNestedNameFailed` is empty (my initial try before research). And `appNestedNameSuccess` has value; after I did research and found in tests for [Configuration](
[To see links please register here]
) (relevant code shown):// Assert
Assert.Equal("IniValue1", config.Get("IniKey1"));
Assert.Equal("IniValue2", config.Get("IniKey2:IniKey3"));
Can someone explain why is this the case? Why would it make sense to use `:` over `.`? From my interaction with JSON data usually `.` notation works fine, e.g. [How to access nested json data](
[To see links please register here]
).Also, I found similar [SO question](
[To see links please register here]
) but this does not give explanation of why `:` was chosen.