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
    }
读取json文件实体
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

 

 

posted @ 2023-03-25 15:04  じ逐梦  阅读(585)  评论(0)    收藏  举报