iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.net core中编辑json配置文件的方法
  • 633
分享到

.net core中编辑json配置文件的方法

2024-04-02 19:04:59 633人浏览 独家记忆
摘要

引言 最近在具体项目开发应用中,项目采用的JSON格式配置文件,配置文件的加载采用的IConfiguration接口对象进行的管理,这是.net standard时代,微软所提供的现

引言

最近在具体项目开发应用中,项目采用的JSON格式配置文件,配置文件的加载采用的IConfiguration接口对象进行的管理,这是.net standard时代,微软所提供的现代化的配置管理工具

项目设计中,需要在运行过程中,将远程服务端发送过来的配置信息回写到配置文件中。然而,必应也好,百度也罢,翻遍网络,这套现代化的配置管理模型中,却找不到一个可以改变配置回写的方法。

无奈之下,只好自己动手,手动造轮子了。

.NET Standard时代的配置模型

随着.NET Standard时代的来临,System.Configuration在.net core中已经不存在了,那么取而代之的是Microsoft.Extensions.Configuration系列配置管理类库:

Microsoft.Extensions.Configuration.Abstractions:基础接口

Microsoft.Extensions.Configuration:实现上面的基础接口

Microsoft.Extensions.Configuration.FileProviderExtensions:提供重载配置扩展

Microsoft.Extensions.Configuration.Binder:提供转换到实体功能

Microsoft.Extensions.Configuration.FileExtensions:提供配置文件根路径扩展

相关文章资源

关于以上类库的使用,网上有大量相关文章,如知名博主大内老A的文章中,有着系统、详细阐述,各位可自行查阅。

链接在此:https://www.cnblogs.com/artech/p/config-for-net-core.html

配置类的建议用法

出于编程上的便利,我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值,而是倾向于将一组相关的配置绑定为一个对象。

例如笔者某个项目消息主题配置参数类如下:


public class TopicConfig
{
        public string Project { get; set; } ="ibms";
        public string Device { get; set; } = "gateway";
        public string City { get; set; } = "wuhan";
        public string Area { get; set; } = "poly";
}

我们可以为配置类指定默认参数。

在需要使用配置参数的对象中,我们可以将配置类设置为属性字段


private TopicConfig topicConfig = new TopicConfig();

当对象类被实例化时,配置类将自动被构造并拥有默认配置参数

我们在需要使用配置的对象类中,写一个加载配置类的方法和保存配置类的方法,当对象类构造时,调用并执行加载配置文件。

当配置文件存在时,判断对应的配置段是否存在,如果存在,则绑定到对应的配置类,从而实现配置参数的加载(对象类中,相关需要使用配置参数的地方,直接从配置类的获取参数);

当配置文件不存在时,加载配置方法调用保存配置方法,将默认配置回写到配置文件中。

当配置参数动态更新后需要保存时,也通过调用保存配置方法,将配置参数更新到配置文件中。

示例json配置文件


{
    "topic": {
        "Project": "ibms",
        "Device": "gateway",
        "City": "wuhan",
        "Area": "poly"
    }
}

加载配置方法

笔者采用程序目录下的"appsettings.json"文件作为配置文件


private void LoadConfig()
        {
            var path = Directory.GetCurrentDirectory();
            var config_file = "appsettings.json";
            var full_path = Path.Combine(path, config_file);
            if (File.Exists(full_path))
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(path)
                    .AddJsonFile("appsettings.json");

                IConfiguration Configuration = builder.Build();

                if (Configuration.GetSection(Topic).Exists())//Topic为字符串常量,对应配置段属性名称
                    Configuration.GetSection(Topic).Bind(topicConfig);//绑定配置数据到配置类
            }
            else
            {
                SaveConfig();
            }
     }

在dotNet Core由于采用了更为模块化的设计方式,使用配置类需要引用相应的程序包,我们在程序中使用json配置,需要安装Microsoft.Extensions.Configuration.Json程序包。

Bind方法为扩展方法,需要项目中先安装Microsoft.Extensions.Configuration.Binder程序包。

程序包可通过Nuget包管理器进行安装。

保存配置方法


private void SaveConfig(string path = "")
{
        if (path == "") path = Directory.GetCurrentDirectory();
        Dictionary<string, object> sectionsInfo = new Dictionary<string, object>();

        sectionsInfo.Add(Topic, topicConfig); //Topic为字符串常量,对应配置段属性名称
        JsonConfigHelper.SaveJson(sectionsInfo, path);
}

调用json配置保存类,将配置保存到指定的位置。

通用Json配置保存类

笔者针对需要改写配置文件的应用的需要,自行实现了一个保存json格式配置文件的通用类,支持同时保存多个配置类。

支持对现有配置文件节点的改写和追加配置节点。


using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace flyfire.Common
{
    public class JsonConfigHelper
    {
        public static bool SaveJson(Dictionary<string,object> sectionInfo, string configFilePath, string configFileName = "appsettings.json")
        {
            if (sectionInfo.Count==0)
                return false;

            try
            {
                var filePath = Path.Combine(configFilePath, configFileName);
                JObject jsonObject;

                if (File.Exists(filePath))
                {
                    using (StreamReader file = new StreamReader(filePath))
                    {
                        using (JsonTextReader reader = new JsonTextReader(file))
                        {
                            jsonObject = (JObject)JToken.ReadFrom(reader);
                        }
                    }
                }
                else
                {
                    jsonObject = new JObject();
                }

                foreach (var key in sectionInfo.Keys)
                {
                    jsonObject[key] = JObject.FromObject(sectionInfo[key]);
                }

                using (var writer = new StreamWriter(filePath))
                using (JsonTextWriter jsonwriter = new JsonTextWriter(writer)
                {
                    FORMatting = Formatting.Indented,//格式化缩进
                    Indentation = 4,  //缩进四个字符
                    IndentChar = ' '  //缩进的字符是空格
                })
                {
                    jsonObject.WriteTo(jsonwriter);
                    return true;
                }
            }
            catch (Exception)
            {
                return false;
            }
        }
    }
}

至此,我们完成了Json格式配置文件的加载、绑定与保存。

以上就是.net core中编辑json配置文件的详细内容,更多关于.net core json配置文件的资料请关注编程网其它相关文章!

--结束END--

本文标题: .net core中编辑json配置文件的方法

本文链接: https://www.lsjlt.com/news/128573.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .net core中编辑json配置文件的方法
    引言 最近在具体项目开发应用中,项目采用的json格式配置文件,配置文件的加载采用的IConfiguration接口对象进行的管理,这是.net standard时代,微软所提供的现...
    99+
    2024-04-02
  • .NET Core读取配置文件的方法
    配置文件是每个项目最基础的部分,也是不可或缺的部分,比如:数据库连接、中间件属性等常见的配置。 今天这篇文章主要内容就是,在.Net Core项目中怎样去读取配置文件并使用。 提前准...
    99+
    2024-04-02
  • .Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot
    前言 众所周知,appsetting.json 配置文件是.Net 的重大革新之心,抛开了以前繁杂的xml文件,使用了更简洁易懂的json方式,简直不要太舒服了!东西虽然好,但怎么在...
    99+
    2024-04-02
  • ASP.NET CORE读取json格式配置文件
    目录一、在Startup类中读取json配置文件1、使用Configuration直接读取2、使用IOptions接口1、定义实体类2、修改json文件3、在StartUp类里面配置...
    99+
    2024-04-02
  • .NET Core类库项目中读取appsettings.json配置的方法
    这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 ——IConfiguration ,一种叫优雅的方法 —— I...
    99+
    2024-04-02
  • ASP.NET CORE如何读取json格式配置文件
    这篇文章将为大家详细讲解有关ASP.NET CORE如何读取json格式配置文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在.Net Framework中,配置文件一般采用的是XML格式的,...
    99+
    2023-06-29
  • .NET Core结合Nacos实现配置加解密的方法
    目录背景简单原理说明自定义 ConfigFilter简单应用写在最后背景 当我们把应用的配置都放到配置中心后,很多人会想到这样一个问题,配置里面有敏感的信息要怎么处理呢? 信息既然敏...
    99+
    2024-04-02
  • .NET Core控制台应用ConsoleApp读取appsettings.json配置文件
    准备 Visual Studio 2017.NET Core 2.1 新建控制台应用(.NET Core) 默认的 Program.cs // Program.cs using S...
    99+
    2024-04-02
  • .NET 中配置从xml转向json方法示例详解
    目录一、配置概述二、配置初识三、选项模式四、选项依赖注入五、其它配置六、托管模式一、配置概述 在.net framework平台中我们常见的也是最熟悉的就是.config文件作为配置...
    99+
    2022-11-13
    .NET配置xml转向json .NET 配置
  • .NET Core中使用gRPC的方法
    目录1.什么是gRPC1.基本介绍2.proto文件3.上手实践2.gRPC流1.服务端流、客户端流、双向流2.NetCore Web项目作为客户端3.gRPC AOP拦截1.什么是...
    99+
    2024-04-02
  • .NET Core配置TLS Cipher(套件)的详细过程
    目录前言.NET Core Cipher(套件)配置密码学基础前言 前不久我发表了一篇关于TLS协议配置被我钻了空子,经过第三方合作伙伴验证,针对此TLS协议存在不安全套件,急催速速...
    99+
    2024-04-02
  • 如何找到并编辑git的配置文件
    对于每个git用户来说,了解他们的配置文件所在可以更好地了解git的使用。在本文中,我们将讨论如何找到并编辑git的配置文件。Git配置文件有哪些?Git中有两个不同级别的配置文件:系统级配置文件和用户级配置文件。1. 系统级配置文件一个系...
    99+
    2023-10-22
  • .Net Core读取文件时中文乱码问题的解决方法分享
    目录背景问题.NET Framework 中的默认属性.NET Core 上的默认属性解决办法附.Net Core下读取配置文件中文乱码总结背景 今天在使用core web api上...
    99+
    2024-04-02
  • .net core 使用阿里云分布式日志的配置方法
    前言 好久没有出来夸白了,今天教大家简单的使用阿里云分布式日志,来存储日志,没有阿里云账号的,可以免费注册一个 开通阿里云分布式日志(有一定的免费额度,个人测试学习完全没问题的,香...
    99+
    2024-04-02
  • ubuntu文件编辑的方法是什么
    在Ubuntu系统中,可以使用以下几种方法来编辑文件: 使用命令行文本编辑器:Ubuntu系统自带了一些命令行文本编辑器,如Na...
    99+
    2024-04-02
  • Asp.Net Core配置多环境log4net配置文件的全过程
    目录前言配置log4net总结前言 在之前的文章中有讲到AspNetCore多环境配置文件的应用,我们根据自己多种环境分别配置多个appsettings.$EnvironmentNa...
    99+
    2024-04-02
  • java配置context.xml文件的方法
    在Java中,配置`context.xml`文件通常是为了配置和管理应用程序的上下文环境。以下是一种方法来配置`context.xm...
    99+
    2023-08-11
    java
  • php json实现中文不编码的方法
    本篇内容主要讲解“php json实现中文不编码的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php json实现中文不编码的方法”吧!使用 php 自带的 json_encode 函数对...
    99+
    2023-06-20
  • .net core 基于Hangfire+Mysql持久化实现定时任务配置方法
    1.negut引入hangfire相关包 Hangfire.AspNetCore,Hangfire.Core,Hangfire.Dashboard.BasicAuthorizatio...
    99+
    2024-04-02
  • SpringBoot中读取application.properties配置文件的方法
    application.properties有以下这几条数据 方法一:@Value注解+@Component 建议properties少的时候用,多的时候就不要使用这种方法了 im...
    99+
    2023-02-07
    SpringBoot读取application.properties SpringBoot application properties
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作