.Net Core使用IConfiguration来处理Json文件
前几天公司的用上了携程的开源配置中心:Apollo

然后同事给我提了这么个问题,因为之前的时候我们用的都是.NET Core自带的appsetting.json,为了兼容代码的目前工具类中用来进行配置搜索的方法,需要把配置中心的key写成【 父节点:子节点:子节点】的形式
问我有没有什么好的办法把现有的配置文件都转成这样的,不然手动copy太费劲了。
于是我想到了使用IConfiguration来进行json的操作,代码如下:
通过IConfiguration来不断的获取下一个子节点然后递归返回
DirectoryInfo root = new DirectoryInfo(path);
FileInfo[] files = root.GetFiles();
foreach (var file in files)
{
var builder = new ConfigurationBuilder().AddJsonFile(file.FullName);
var config = builder.Build();
var first_chilren = config.GetChildren();
var key_value = Recursion(first_chilren, "", true);
foreach (var item in key_value)
{
if (key_value_result.Any(x => x.key == item.key))
{
continue;
}
key_value_result.Add(new DiffJson {
key=item.key,
value=item.value,
file_name=file.Name
});
}
}
public static IEnumerable<Json> Recursion(IEnumerable<IConfigurationSection> section, string parent_key, bool is_first)
{
List<Json> result = new List<Json>();
foreach (var item in section)
{
var chiilren = item.GetChildren();
string currnet_key = "";
if (is_first)
{
currnet_key = $"{item.Key}";
}
else
{
currnet_key = $"{parent_key}:{item.Key}";
} if (chiilren.Any())
{
result.AddRange(Recursion(chiilren, currnet_key, false));
}
if (!string.IsNullOrWhiteSpace(item.Value))
{
result.Add(new Json
{
key = currnet_key,
value = item.Value
});
}
}
return result;
}
最后返回效果:

.Net Core使用IConfiguration来处理Json文件的更多相关文章
- ASP.NET Core launchsettings.json 文件
ASP.NET Core launchsettings.json 文件 在本节中,我们将讨论在 ASP.NET Core 项目中launchsettings.json文件的重要性. launchset ...
- ASP.NET Core 2.2 附加的数据文件存放在项目文件夹内
在ASP.NET 4.x中(包括ASP.NET MVC 5),可以通过附加数据库文件的方式,将数据库保存在项目的文件中.这种方式对于不同时段需要更换计算机(白天办公室,晚上家里)开发时带来好处. 而. ...
- ASP.NET Core appsettings.json 文件
ASP.NET Core appsettings.json 文件 在本节中,我们将讨论 ASP.NET Core 项目中appsettings.json文件的重要性. 在以前的 ASP.NET 版本中 ...
- ASP.NET Core 在 JSON 文件中配置依赖注入
前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等 ...
- 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
原文链接: Deep-dive into .NET Core primitives: deps.json, runtimeconfig.json, and dll's 作者: Nate McMaste ...
- 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来,我 ...
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来 ...
- asp.net core读取appsetting.json文件
1.在Startup.cs文件中注入,ConfigureServices方法 services.Configure<MyConfig>(Configuration.GetSection(& ...
- 转载:ASP.NET Core 在 JSON 文件中配置依赖注入
在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等)时候,都是提供了专有的接口以供使用第三方的依赖注入组件,比如我们常用的会使用 Autofac.Untiy.Stri ...
随机推荐
- 第三方模块:gulp模块
一.Gulp的使用 1. 使用npm install gulp 下载gulp库文件 2. 在项目根目录下简历gulpfile.js文件 3. 重构项目的文件夹架构src目录放置源代码文件,dist ...
- wordpress数据库结构以及数据表之间的关系
默认WordPress一共有以下11个表.这里加上了默认的表前缀 wp_ . wp_commentmeta:存储评论的元数据 wp_comments:存储评论 wp_links:存储友情链接(Blog ...
- ajax使用jsonp跨域调用webservice error错误信息"readyState":4,"status":200,"statusText":"success"
主要还是接口写有问题 至于ajax保持简洁写法即可 $.ajax({ dataType: 'jsonp', type: ‘get’, data: {}, url: '' })
- Elastic Search闪退问题
昨天还可以正常启动,今天及不行.. 在网上找了很多方法都不行,后来参考https://blog.csdn.net/happyzxs/article/details/89156068,修复好了 一.遇到 ...
- styled-components缺点
缺点 不能用 stylelint 检查你的 Css 代码 在使用 styled-components 的过程中也会遇到一些问题,比如我们的项目会用stylelint来做样式代码的检查,但是使用了 st ...
- 轮播图--js课程
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java中遍历实体类属性和类型,属性值
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...
- CentOS7.6下设置mysql服务开机启动
在centos7中所有对服务的管理都集中到了systemctl当中,所以服务的启动.关闭.重启.开机启动等等的操作都可以用systemctl. systemctl对服务的管理都是通过配置文件,配置文件 ...
- mkdir -建立目录
总览 mkdir [选项] 目录... POSIX 选项: [-p] [-m mode] GNU 选项(缩写): [-p] [-m mode] [--verbose] [--help] [--vers ...
- 2019 计蒜之道 复赛 B. 个性化评测系统 (模拟,实现,暴搜)
24.02% 1000ms 262144K "因材施教"的教育方式自古有之,互联网时代,要实现真正意义上的个性化教育,离不开大数据技术的扶持.VIPKID 英语 2020 多万学员 ...