irpas技术客

C# 手把手教你写一个自己的Json文件读取帮助类_c# 写json文件_孟章豪

网络 5807

**

C# 手把手教你写一个自己的Json文件读取帮助类

**

前言

??在.net core或者高版本的.net框架中,很多基础函数的用法已经给你封装的很好了,比如我们就可以配置后直接使用Configuration[‘property’]来获取json文件的内容。但是在一些老项目当中,你可能就用不了那些封装好的库了,你会为了读取一些json文件、xml文件而焦头烂额。 ??此时,我建议读一读这篇文章。

什么是Json文件,有什么作用

??json文件通常在我们的一个项目中,用作一些参数的配置文件。因为在项目打包运行中,json文件不会被编译而是保留下来。在一些上线项目中,有事我们需要修改一些配置参数,比如国内国外,开关某个功能时,无疑会方便很多。

实现方式

??实现,我们首先还是肯定要先使用系统接口文本IO将其读取出来,然后利用jObjet进行处理,最后json序列化或反序列化为自己想要的东西。

代码

加载json文件

/// <summary> /// Json文件工具类 /// </summary> public class JsonHelper { protected string TextJson { get; set; } private string File { get; set; } protected JsonHelper() { } // 传入文件路径 protected JsonHelper(string file) { if (!System.IO.File.Exists(file)) { throw new FileNotFoundException(file); } File = file; TextJson = System.IO.File.ReadAllText(file); } /// <summary> /// 加载json文件 /// </summary> /// <param name="filePath">文件绝对路径</param> /// <returns>返回jsonHelper实例</returns> public static JsonHelper LoadJsonFile(string filePath) { return new JsonHelper(filePath); } public JsonAppSetting AppSetting => new JsonAppSetting(File); }

通过JObject对象格式化json文件内容,索引器读取并返回结果

/// <summary> /// 读json /// </summary> public class JsonAppSetting : JsonHelper { private JObject JObject { get; set; } public JsonAppSetting(string _file) : base(_file) { JObject = JObject.Parse(TextJson); } /// <summary> /// 读取json数据 /// </summary> /// <param name="key">键值key 例子 A:B:C</param> /// <returns>返回对应键值的json数据</returns> public string this[string key] { get { var keyArray = key.Split(":".ToArray()); var firstKey = keyArray.FirstOrDefault(); var otherKey = keyArray.Skip(1); JToken jToken = JObject[firstKey]; foreach (var item in otherKey) { jToken = jToken[item]; } return JsonConvert.SerializeObject(jToken); } } }

示例json文件,在项目根目录下,为appsettings.json

{ "Translation": { "Baidu": { "Url": "https://fanyi-api.baidu.com/api/trans/vip/translate", "AppId": "abc", "Key": "cba" } }, "ConnectionStrings": { "SoftDb": "Database=baseName;Server=ip;uid=uid;pwd=pwd" }, "LocalUrl": "http://localhost:1234", "EnableMaps": [ "baidu", "here", "gaode" ] } 使用方法

你可以这样使用

// 外面包一层公用类,直接使用项目根目录+ appsettings.json固定文件 public class Common { private static JsonHelper _jsonHelper; /// <summary> /// Json读取工具 /// </summary> public static JsonHelper JsonHelper { get { if (_jsonHelper == null) { var file = AppDomain.CurrentDomain.BaseDirectory + "appsettings.json"; _jsonHelper = JsonHelper.LoadJsonFile(file); } return _jsonHelper; } } } public class test { public void testFunc() { var localUrl = Common.JsonHelper.AppSetting["LocalUrl"]; //"http://localhost:1234" var softDb = Common.JsonHelper.AppSetting["ConnectionStrings:SoftDb"]; //"Database=baseName;Server=ip;uid=uid;pwd=pwd" var enableMap = JsonConvert.DeserializeObject<List<string>>(JsonHelper.AppSetting["EnableMaps"]);//列表[ "baidu", "here", "gaode" ] } }

当然你也可以这样,自己指定路径

public class test { public void testFunc() { var _jsonHelper = JsonHelper.LoadJsonFile(filePath); var localUrl = _jsonHelper.AppSetting["LocalUrl"]; //"http://localhost:1234" var softDb = _jsonHelper.AppSetting["ConnectionStrings:SoftDb"]; //"Database=baseName;Server=ip;uid=uid;pwd=pwd" var enableMap = JsonConvert.DeserializeObject<List<string>>(_jsonHelper.AppSetting["EnableMaps"]);//列表[ "baidu", "here", "gaode" ] } } 总结

??不管需要什么文件的数据,到得底层都是文本读写,我们只不过是需要将文本里的内容读取出来,通过不同的编码或者处理而已。

最后感谢大家的阅读,如有疑问,欢迎一起探讨!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #C #写json文件 #在net #此时我建议读一读这篇文章