c#读取json文件配置内容并转为list
1、读取json文件内容
//调用方法读取json文件内容 List<UsBhpItem> bhpItems = UsServiceAdd.Us_BHP_GetConfig();
public class UsBhpItem { /// <summary> /// 序号 /// </summary> public string PlugID { get; set; } /// <summary> /// 模块名称 /// </summary> public string PlugName { get; set; } /// <summary> /// 需要注入的程序集名 (类库名) /// </summary> public string PlugDLLScoped { get; set; } /// <summary> /// 是否注入基类 /// </summary> public bool IfBaseService { get; set; } /// <summary> /// 注入的基类 /// </summary> public string BaseServiceName { get; set; } /// <summary> /// 注入类型 /// </summary> public InJectType InJectType { get; set; } = InJectType.Scope; /// <summary> /// 是否启用 /// </summary> public bool IsEnable { get; set; } } public enum InJectType { /// <summary> /// 瞬时注入 /// </summary> Transient, /// <summary> /// 作用域注入 /// </summary> Scope, /// <summary> /// 单例注入 /// </summary> Single, NoNeed }
public static class UsServiceAdd { //json public static string bhpconfigpath = "/usconfig/bhpconfig.json"; #region 1.从json配置文件中读取配置注入服务的信息 /// <summary> /// 从json配置文件中读取配置注入服务的信息 /// </summary> /// <returns></returns> public static List<UsBhpItem> Us_BHP_GetConfig() { List<UsBhpItem> list = new List<UsBhpItem>(); //读取配置注入服务的信息 list = JsonTextTools.UsGetConfig<List<UsBhpItem>>(bhpconfigpath); return list; } #endregion }
public class JsonTextTools { #region 1.JSON字符格式化 /// <summary> /// JSON字符格式化 /// </summary> /// <typeparam name="T"></typeparam> json: /// <param name="json"></param>类型参数: /// <returns></returns> public static T DeserializeJsonToObject<T>(string json) where T : class { try { if (string.IsNullOrEmpty(json)) { return null; } JsonSerializer jsonSerializer = new JsonSerializer(); StringReader reader = new StringReader(json); object obj = jsonSerializer.Deserialize(new JsonTextReader(reader), typeof(T)); return obj as T; } catch (Exception ex) { //UsKFileLogTools.AddLog(MethodBase.GetCurrentMethod()!.Name + ":" + json, ex, LogType.log); return null; } } #endregion #region 2.读取JSON文件 /// <summary> /// 读取JSON文件 /// </summary> /// <typeparam name="T">类型参数:</typeparam> /// <param name="sPath">路径</param> /// <returns></returns> public static T UsGetConfig<T>(string sPath = "/usconfig/systemconfig.json") where T : class { KAPIResult kAPIResult = FileTools.UsFileRead(sPath); if (kAPIResult.result != 0) { return null; } string msg = kAPIResult.msg; return DeserializeJsonToObject<T>(msg); } #endregion }
读取json文件内容
public class FileTools { #region 1.读取文件内容 /// <summary> /// 读取文件内容 /// </summary> /// <param name="sPath">文件的路径</param> /// <param name="isPhysicsPath">是否是物理路径,如果不是的话,系统会进行路径转换</param> /// <param name="sType">读写方式</param>Encoding.UTF8; /// <returns></returns> public static KAPIResult UsFileRead(string sPath, bool isPhysicsPath = false, Encoding sType = null) { KAPIResult kAPIResult = new KAPIResult(); if (!isPhysicsPath) { sPath = MapPathTools.UsPath(sPath); } string sInfo = ""; //某一硬件要读取数据时,会首先从缓存中查找需要的数据,找到了则直接执行,找不到的话则从内存中查找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。 //从缓存读取数据,如果命中(有)则返回0 ,否则返回-1,需要自己读写 //kAPIResult.result = UsKFileCacheRead(sPath, ref sInfo); kAPIResult.result = -1; if (kAPIResult.result == 0) { kAPIResult.msg = sInfo; } else { //从内存读取数据 kAPIResult = UsMemoryFileRead(sPath, sType); if (kAPIResult.result == 0) { //文件内容写入缓存 //UsKFileCacheSet(sPath, kAPIResult.msg); } } return kAPIResult; } #endregion #region /// <summary> /// 从内存读取路径文件数据 /// </summary> /// <param name="sPath"> 物理路径</param> /// <param name="isPhysicsPath"></param> /// <param name="sType">获取格式</param> /// <returns> 返回结果0表示成功;内容在msg内;非0为失败,msg为描述</returns> public static KAPIResult UsMemoryFileRead(string sPath, Encoding sType = null) { KAPIResult kAPIResult = new KAPIResult(); if (sType == null) { sType = Encoding.UTF8; } try { if (File.Exists(sPath)) { StreamReader streamReader = new StreamReader(sPath, sType); kAPIResult.msg = streamReader.ReadToEnd().ToString(); streamReader.Close(); streamReader.Dispose(); } else { kAPIResult.result = -1; kAPIResult.msg = $"文件路径{sPath}不存在"; } } catch (Exception ex) { kAPIResult.result = -2; kAPIResult.msg = ex.Message.ToString(); kAPIResult.data = ex; } return kAPIResult; } //private static KAPIResult UsMemoryFileRead(string sPath, bool isPhysicsPath = false, Encoding sType = null) //{ // KAPIResult result = new KAPIResult(); // if (!isPhysicsPath) // { // sPath = MapPathTools.UsPath(sPath); // } // using (System.IO.StreamReader file = System.IO.File.OpenText(sPath)) // { // using (JsonTextReader reader = new JsonTextReader(file)) // { // //JArray 是[{}{}{}] JObject是{ } // JArray array = (JArray)JToken.ReadFrom(reader); // List<UsBhpItem> belongingTos = array.ToObject<List<UsBhpItem>>(); // result.data = belongingTos; // } // } // return result; //} #endregion }
json文件内容如图:

成功读取并转为了list

本文来自博客园,作者:じ逐梦,转载请注明原文链接:https://www.cnblogs.com/ZhuMeng-Chao/p/17254768.html

浙公网安备 33010602011771号