调用方法:
LocalSetupHelper.SetData(Sss.维护, "密码", "123456");  //保存

var c=LocalSetupHelper.GetData(Sss.前台, "密码"); 获取

LocalSetupHelper.RemovePropertyName(Sss.前台, "密码"); //清除子节点

LocalSetupHelper.RemovePropertyName(Sss.前台); 清除父节点

enum Sss
{
维护,
前台,
}

输出格式:

{
"前台": {
"密码": "123456",
},
"维护": {
"密码": "123456"
}
}

Demo: 拿来直接用

public static class LocalSetupHelper
{
#region 字段
/// <summary>
/// json文本
/// </summary>
private static string json;
/// <summary>
/// 指定保存路径
/// </summary>
public static string path { get; set; }
#endregion #region 构造函数
static LocalSetupHelper()
{
if (string.IsNullOrEmpty(path))
{
string currentDirectory = Directory.GetCurrentDirectory();
path = currentDirectory + "\\LocalSetup.Data";
}
if (!File.Exists(path))
{
FileStream fs = File.Create(path);
fs.Close();
}
json = LoadFromFile(path);
}
#endregion #region 获取
/// <summary>
/// 获取数据
/// </summary>
/// <param name="id">父节点</param>
/// <param name="propertyName">子节点</param>
/// <returns></returns>
public static object GetData(Enum id, string propertyName)
{
return GetDatas(id, propertyName);
}
#endregion #region 保存
/// <summary>
/// 保存数据
/// </summary>
/// <param name="id">父节点</param>
/// <param name="propertyName">子节点名称</param>
/// <param name="propertyValue">子节点值</param>
public static void SetData(Enum id, string propertyName, object propertyValue)
{
SetData(ref json, id, propertyName, propertyValue); }
#endregion #region 移除
/// <summary>
/// 移除
/// </summary>
/// <param name="id">父节点</param>
/// <param name="propertyName">子节点</param>
public static void RemovePropertyName(Enum id, string propertyName = null)
{
Remove(ref json, id, propertyName); }
/// <summary>
/// 清空数据
/// </summary>
public static void ClearData()
{
json = string.Empty;
SaveToFile(path);
}
#endregion #region 内部方法
private static void Add(ref string json, string propertyName, object propertyValue)
{
JObject jsonObj = JObject.Parse(json);
jsonObj.Add(propertyName, JToken.FromObject(propertyValue));
json = jsonObj.ToString();
} private static void Update(ref string json, string propertyName, object propertyValue)
{
JObject jsonObj = JObject.Parse(json);
jsonObj[propertyName] = JToken.FromObject(propertyValue);
json = jsonObj.ToString();
} private static object GetValue(string json, string propertyName)
{
dynamic jsonObj = JsonConvert.DeserializeObject(json);
return jsonObj[propertyName];
} private static void Remove(ref string json, Enum id, string propertyName = null)
{
dynamic jsonObj = JsonConvert.DeserializeObject(json);
if (propertyName == null)
{
jsonObj.Remove(propertyName);
}
else
{
//jsonObj["总台"].Value<JObject>().Remove("账号");
jsonObj[id.ToString()].Remove(propertyName);//13.0版本
}
json = JsonConvert.SerializeObject(jsonObj);
SaveToFile(path);
} private static void SetData(ref string json, Enum id, string propertyName, object propertyValue)
{
JObject jsonObj;
if (!string.IsNullOrEmpty(json))
{
jsonObj = JObject.Parse(json);
}
else
{
jsonObj = new JObject();
} if (jsonObj[id.ToString()] == null)
{
jsonObj.Add(id.ToString(), new JObject());
}
jsonObj[id.ToString()][propertyName] = JToken.FromObject(propertyValue); json = jsonObj.ToString();
SaveToFile(path);
} private static object GetDatas(Enum id, string propertyName)
{
if (!string.IsNullOrEmpty(json))
{
JObject jsonObj = (JObject)JsonConvert.DeserializeObject(json);
JObject frontEndObj = jsonObj[id.ToString()] as JObject;
if (frontEndObj!=null&&frontEndObj.ContainsKey(propertyName))
{
return jsonObj[id.ToString()][propertyName];
}
}
return null;
} private static void SaveToFile(string filePath)
{
using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (var streamWriter = new StreamWriter(fileStream))
{
streamWriter.Write(json);
}
}
} private static string LoadFromFile(string filePath)
{
string[] lines = File.ReadAllLines(filePath);
return string.Join("", lines);
}
#endregion
}

当然也有这种节点的

{
"密码": "123456",
"密码xxx": "123456"
}

可以参考前面的连接 :(Newtonsoft)Json增删改查(这是单个对象) - 22222220 - 博客园 (cnblogs.com)

C# Newtonsoft增删改查(本地存储)(简单便捷)(拿来即用)的更多相关文章

  1. 如何创建数据库以及MySQL增删改查命令的简单运用

    在已经安装好MySQL的前提下 1.在Windows打开命令提示符窗口,输入命令启动MySQL命令行工具并登入root用户:mysql -h localhost -u root -p 2.输入密码后, ...

  2. C#中对sqlserver进行增删改查操作(简单易懂)

    1.添加引用using System.Data;using System.Data.SqlData; 2.建立于数据库的连接,建议将它做成一个方法,方便多次利用.string sqlconnectio ...

  3. MyBatis对数据库的增删改查操作,简单演示样例

    之前一直有用Hibernate进行开发.近期公司在使用Mybatis.依据网上的演示样例,做了一个简单的Demo,以便日后复习 使用XMl方式映射sql语句 整体结构例如以下图 watermark/2 ...

  4. easyui+nodejs+sqlserver增删改查实现

    用到的模块或者技术: Express: http://www.expressjs.com.cn/4x/api.html#express Easyui: http://www.jeasyui.com/d ...

  5. QMap 的增删改查

    map 是一种数据容器,它提供一种由key 到 value 的映射.map 的key 是唯一的, 也是有序的.map 通常由近似平衡的红黑树来实现.key 的有序性,使得插入,查找节点比较有效.map ...

  6. MyBatis-单表的增删改查(CRUD)操作

          在学习MyBatis的单表的增删改查操作之前,还是再次熟悉下MyBatis这个框架,只有对其熟悉的情况下,才能很好的使用,灵活的开发.         MyBatis优点:         ...

  7. Spring Date JPA实现增删改查

    1.新建一个Cart类 package com.entity; public class Cart { private int id; private int userId; private int ...

  8. 12 Servlet_04 Servlet增删改查 静态页面与动态页面 EL表达式 table表格的一些样式

    今天学习了servlet的增删改查: 存储数据 setAttribute(String name,Object obj );获取数据 getAttribute(String name);删除数据 re ...

  9. Mybatis-plus实现数据库的增删改查操作

    目录 1.MybatisPlus简介 2.MybatisPlus注解介绍 3.常用方法 4.SpringBoot整合MybatisPlus实现增删改查的一个简单Demo 5.参考资料 1.Mybati ...

  10. 使用Mongoose类库实现简单的增删改查

    使用Mongoose类库实现简单的增删改查 Mongoose是在nodejs环境中对MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为javascript对象供我们使用. M ...

随机推荐

  1. Oracle和达梦:循环执行SQL(如循环插入数据)

    Oracle和达梦:循环执行SQL(如循环插入数据) 其中:WHILE i <= 100000 LOOP,10万是循环10万次 其中:i NUMBER := 1;,1是从一开始 -- 循环执行一 ...

  2. 一文搞懂Maven配置,从此不再糊涂下载依赖(文末有成品)

    一般来说Maven都是配合着idea一起使用,下载依赖速度慢就去网上找个镜像配置一下,但总会遇到莫名其妙的问题,比如镜像源不生效.Error reading file pom.xml等等.今天详细讲解 ...

  3. SAP Adobe Form 教程二 表

    本文将介绍一些进阶内容,前文:SAP Adobe Form 教程一 简单示例 方法和对比 使用表对象(Table Object)创建表 优点: 它简单易行. 当我们只有很少的字段单行时,我们可以使用它 ...

  4. 五:瑞芯微RV1109

    瑞芯微RV1109是一款用于工控机或人工智能视觉应用的高性能机器视觉处理器SoC. 参考资料 http://www.neardi.com/news_22/434.html https://www.ro ...

  5. PyTorch的安装与使用

    技术背景 PyTorch是一个非常常用的AI框架,主要归功于其简单易用的特点,深受广大科研人员的喜爱.在前面的一篇文章中我们介绍过制作PyTorch的Singularity镜像的方法,这里我们单独抽出 ...

  6. JDK源码阅读-------自学笔记(六)(java.util.Arrays用法和描述浅析)

    工具类的使用 要多使用这个类,同时,很多算法包含其中,常见操作排序.查找.填充.打印等. 1.打印数组 ------Arrays.toString() 1 // 整型初始化 2 int[] integ ...

  7. 守护安全|AIRIOT城市天然气综合管理解决方案

      城市使用天然气存在安全风险和隐患,天然气管理的复杂性也比较高,依靠传统人工难以发现安全漏洞,特别是在燃气场站.管网的安全监管等方面,场站面临作业管理.区域管控等问题,管线存在第三方施工发现问题不及 ...

  8. selenium 滚动截图参考

    Selenium本身并不直接支持滚动截图,但是你可以通过编程方式实现滚动截图.下面是一个Python的例子,使用Selenium和PIL库实现滚动截图: from selenium import we ...

  9. Linux系统修改命令提示符格式及颜色

    放到全局环境变量.注意自己是放全局还是自己家目录下环境的 echo "export PS1='[\[\e[35;1m\]\u\[\e[31;1m\]@\[\e[34;1m\]\h \[\e[ ...

  10. 日常Bug排查-偶发性读数据不一致

    日常Bug排查-偶发性读数据不一致 前言 日常Bug排查系列都是一些简单Bug的排查.笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材. Bug现场 业务场景 先描述这个问题出现的业务场景. ...