.net core 设置读取json配置文件 appsettings.json
startup.cs 中
public class startup { public startup(ihostingenvironment env) { configuration = new configurationbuilder() .setbasepath(env.contentrootpath) .addjsonfile("appsettings.json", optional: true, reloadonchange: true) .addjsonfile($"appsettings.{env.environmentname}.json", optional: true, reloadonchange: true) //增加环境配置文件,新建项目默认有 .addenvironmentvariables() .build(); } public iconfiguration configuration { get; } ....
类库中
var builder = new configurationbuilder() .setbasepath(directory.getcurrentdirectory()) .addjsonfile("appsettings.json") .addjsonfile("appsettings.test.json", true, reloadonchange: true); var config = builder.build(); //读取配置 var a = config["jwtsettings:secret"];
使用.addjsonfile("appsettings.json", optional: true, reloadonchange: true)
这种方法可以保证可以修改正在运行的dotnet core 程序,不需要重启程序
使用newtonsoft.json 查询/修改,以及修改 appsettings.json 文件
readobject
public iactionresult readobject() { string json = @"{ 'cpu': 'intel', 'psu': '500w', 'drives': [ 'dvd read/writer' /*(broken)*/, '500 gigabyte hard drive', '200 gigabyte hard drive' ] }"; jsontextreader reader = new jsontextreader(new stringreader(json)); var string1 = ""; while (reader.read()) { if (reader.value != null) { string1 += "reader.value != null: token: " + reader.tokentype + ", value: " + reader.value + " <br/>"; } else { string1 += "reader.value == null: token: " + reader.tokentype + " <br/>"; } } viewdata["string"] = string1; return view(); }
readjson 读取json 文件
newtonsoft.json
使用newtonsoft.json效果如截图
public class homecontroller : controller { private readonly ihostingenvironment _hostingenvironment; public homecontroller(ihostingenvironment hostingenvironment) { _hostingenvironment = hostingenvironment; } public iactionresult readjson() { string contentpath = _hostingenvironment.contentrootpath + @"\"; ; //项目根目录 var filepath = contentpath + "appsettings.json"; using (streamreader file = new streamreader(filepath)) using (jsontextreader reader = new jsontextreader(file)) { jobject o2 = (jobject)jtoken.readfrom(reader); string licencekey = (string)o2["appsettings"]["key"]; viewdata["string"] = licencekey; return view(); } }
microsoft.extensions.configuration
使用microsoft.extensions.configuration
public iactionresult index() { var builder = new configurationbuilder() .setbasepath(directory.getcurrentdirectory()) .addjsonfile("appsettings.json") .addjsonfile("appsettings.test.json", true, reloadonchange: true); var config = builder.build(); //读取配置 viewdata["secret"] = config["appsettings:key"]; return view(); }
修改 appsettings.json后的效果
-
newtonsoft.json
-
microsoft.extensions.configuration
修改 appsettings.json
streamwriter直接覆盖
public class homecontroller : controller { private readonly ihostingenvironment _hostingenvironment; public homecontroller(ihostingenvironment hostingenvironment) { _hostingenvironment = hostingenvironment; } public iactionresult writejson() { string contentpath = _hostingenvironment.contentrootpath + @"\"; ; //项目根目录 var filepath = contentpath + "appsettings.json"; jobject jsonobject; using (streamreader file = new streamreader(filepath)) using (jsontextreader reader = new jsontextreader(file)) { jsonobject = (jobject)jtoken.readfrom(reader); jsonobject["appsettings"]["key"] = "asdasdasdasd"; } using (var writer = new streamwriter(filepath)) using (jsontextwriter jsonwriter = new jsontextwriter(writer)) { jsonobject.writeto(jsonwriter); } return view(); }
效果如图
缺点 格式化的json和注释都没了
黄山市民网:https://www.huangshanshimin.com/