翼度科技»论坛 编程开发 .net 查看内容

C# Newtonsoft增删改查(本地存储)(简单便捷)(拿来即用)

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
  1. public static class LocalSetupHelper
  2.         {
  3.             #region 字段
  4.             /// <summary>
  5.             /// json文本
  6.             /// </summary>
  7.             private static string json;
  8.             /// <summary>
  9.             /// 指定保存路径
  10.             /// </summary>
  11.             public static string path { get; set; }
  12.             #endregion
  13.             #region 构造函数
  14.             static LocalSetupHelper()
  15.             {
  16.                 if (string.IsNullOrEmpty(path))
  17.                 {
  18.                     string currentDirectory = Directory.GetCurrentDirectory();
  19.                     path = currentDirectory + "\\LocalSetup.Data";
  20.                 }
  21.                 if (!File.Exists(path))
  22.                 {
  23.                     FileStream fs = File.Create(path);
  24.                     fs.Close();
  25.                 }
  26.                 json = LoadFromFile(path);
  27.             }
  28.             #endregion
  29.             #region 获取
  30.             /// <summary>
  31.             /// 获取数据
  32.             /// </summary>
  33.             /// <param name="id">父节点</param>
  34.             /// <param name="propertyName">子节点</param>
  35.             /// <returns></returns>
  36.             public static object GetData(Enum id,string propertyName)
  37.             {
  38.                 return GetDatas(id, propertyName);
  39.             }
  40.             #endregion
  41.             #region 保存
  42.             /// <summary>
  43.             /// 保存数据
  44.             /// </summary>
  45.             /// <param name="id">父节点</param>
  46.             /// <param name="propertyName">子节点名称</param>
  47.             /// <param name="propertyValue">子节点值</param>
  48.             public static void SetData(Enum id,string propertyName, object propertyValue)
  49.             {
  50.                 SetData(ref json,id, propertyName, propertyValue);
  51.               
  52.             }
  53.             #endregion
  54.             #region 移除
  55.           /// <summary>
  56.           /// 移除
  57.           /// </summary>
  58.           /// <param name="id">父节点</param>
  59.           /// <param name="propertyName">子节点</param>
  60.             public static void RemovePropertyName(Enum id,string propertyName=null)
  61.             {
  62.                 Remove(ref json,id, propertyName);
  63.             
  64.             }
  65.             /// <summary>
  66.             /// 清空数据
  67.             /// </summary>
  68.             public static void ClearData()
  69.             {
  70.                 json = string.Empty;
  71.                 SaveToFile(path);
  72.             }
  73.             #endregion
  74.             #region 内部方法
  75.             private static void Add(ref string json, string propertyName, object propertyValue)
  76.             {
  77.                 JObject jsonObj = JObject.Parse(json);
  78.                 jsonObj.Add(propertyName, JToken.FromObject(propertyValue));
  79.                 json = jsonObj.ToString();
  80.             }
  81.             private static void Update(ref string json, string propertyName, object propertyValue)
  82.             {
  83.                 JObject jsonObj = JObject.Parse(json);
  84.                 jsonObj[propertyName] = JToken.FromObject(propertyValue);
  85.                 json = jsonObj.ToString();
  86.             }
  87.             private static object GetValue(string json, string propertyName)
  88.             {
  89.                 dynamic jsonObj = JsonConvert.DeserializeObject(json);
  90.                 return jsonObj[propertyName];
  91.             }
  92.             private static void Remove(ref string json, Enum id,string propertyName=null)
  93.             {
  94.                 dynamic jsonObj = JsonConvert.DeserializeObject(json);
  95.                 if (propertyName==null)
  96.                 {
  97.                     jsonObj.Remove(propertyName);
  98.                 }
  99.                 else
  100.                 {
  101.                     //jsonObj["总台"].Value<JObject>().Remove("账号");
  102.                     jsonObj[id.ToString()].Remove(propertyName);//13.0版本
  103.                 }
  104.                 json = JsonConvert.SerializeObject(jsonObj);
  105.                 SaveToFile(path);
  106.             }
  107.             private static void SetData(ref string json,Enum id,string propertyName, object propertyValue)
  108.             {
  109.                 JObject jsonObj;
  110.                 if (!string.IsNullOrEmpty(json))
  111.                 {
  112.                     jsonObj = JObject.Parse(json);
  113.                 }
  114.                 else
  115.                 {
  116.                     jsonObj = new JObject();
  117.                 }
  118.                 if (jsonObj[id.ToString()] == null)
  119.                 {
  120.                     jsonObj.Add(id.ToString(), new JObject());
  121.                 }
  122.                 jsonObj[id.ToString()][propertyName] = JToken.FromObject(propertyValue);
  123.                 json = jsonObj.ToString();
  124.                 SaveToFile(path);
  125.             }
  126.             private static object GetDatas(Enum id,string propertyName)
  127.             {
  128.                 if (!string.IsNullOrEmpty(json))
  129.                 {
  130.                     dynamic jsonObj = JsonConvert.DeserializeObject(json);
  131.                     return jsonObj[id.ToString()][propertyName];
  132.                 }
  133.                 return null;
  134.             }
  135.             private static void SaveToFile(string filePath)
  136.             {
  137.                 using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
  138.                 {
  139.                     using (var streamWriter = new StreamWriter(fileStream))
  140.                     {
  141.                         streamWriter.Write(json);
  142.                     }
  143.                 }
  144.             }
  145.             private static string LoadFromFile(string filePath)
  146.             {
  147.                 string[] lines = File.ReadAllLines(filePath);
  148.                 return string.Join("", lines);
  149.             }
  150.             #endregion
  151.         
  152.     }
复制代码
View Code 
调用方法:
 
  1. LocalSetupHelper.SetData(Sss.维护, "密码", "123456");  //保存<br>
  2. var c=LocalSetupHelper.GetData(Sss.前台, "密码");  获取<br><br>LocalSetupHelper.RemovePropertyName(Sss.前台, "密码"); //清除子节点<br><br>LocalSetupHelper.RemovePropertyName(Sss.前台); 清除父节点<br><br><br>
复制代码
enum Sss
    {
       维护,
       前台,
    }
 
 
 
输出格式:
{
        "前台": {
                "密码": "123456",
        },
        "维护": {
                "密码": "123456"
        }
}
 
 
当然也有这种节点的
 
{
                "密码": "123456",
                "密码xxx": "123456"
        }
 
 
可以参考前面的连接 :(Newtonsoft)Json增删改查(这是单个对象) - 22222220 - 博客园 (cnblogs.com)
当然这个没仔细看  可能有错误 也没测  自己改改 或者评论区留言 我改  
 

来源:https://www.cnblogs.com/jiaozai891/archive/2023/02/16/17127708.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具