public static class JsonHelper
{
#region 字段
private static string json;
public static string path;
#endregion #region 构造函数
static JsonHelper()
{
if (string.IsNullOrEmpty(path))
{
string currentDirectory = Directory.GetCurrentDirectory();
path = currentDirectory + "\\LocalData.Data";
}
if (!File.Exists(path))
{
FileStream fs = File.Create(path);
fs.Close();
}
json = LoadFromFile(path);
}
#endregion #region 获取
public static object GetData(string propertyName)
{
return GetDate(propertyName);
}
#endregion #region 保存
public static void SetData(string propertyName, object propertyValue)
{
SetData(ref json, propertyName, propertyValue);
SaveToFile(path);
}
#endregion #region 移除
/// <summary>
/// 根据key值移除键值对
/// </summary>
/// <param name="propertyName">key值</param>
public static void RemovePropertyName(string propertyName)
{
Remove(ref json, propertyName);
SaveToFile(path);
}
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, string propertyName)
{
dynamic jsonObj = JsonConvert.DeserializeObject(json);
jsonObj.Remove(propertyName);
json = JsonConvert.SerializeObject(jsonObj);
} private static void SetData(ref string json, string propertyName, object propertyValue)
{
JObject jsonObj;
if (!string.IsNullOrEmpty(json))
{
jsonObj = JObject.Parse(json);
if (jsonObj[propertyName] != null)
{
jsonObj[propertyName] = JToken.FromObject(propertyValue);
}
else
{
jsonObj.Add(propertyName, JToken.FromObject(propertyValue));
}
}
else
{
jsonObj = new JObject
{
{ propertyName, JToken.FromObject(propertyValue) }
}; }
json = jsonObj.ToString();
} private static object GetDate(string propertyName)
{
if (!string.IsNullOrEmpty(json))
{
dynamic jsonObj = JsonConvert.DeserializeObject(json);
return jsonObj[propertyName];
}
return null;
} private static void SaveToFile(string filePath)
{
File.WriteAllText(filePath, json);
} private static string LoadFromFile(string filePath)
{
return File.ReadAllText(filePath);
}
#endregion }

(Newtonsoft)Json增删改查的更多相关文章

  1. 使用 Json.Net 对Json文本进行 增删改查

    JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...

  2. javascript json对象操作(基本增删改查)

    /** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * g ...

  3. Java对象转JSON时如何动态的增删改查属性

    1. 前言 日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON字符串增加额外字段 假如我们有这样结 ...

  4. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面

    前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...

  5. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查

    前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...

  6. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)

    本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...

  7. BootstrapTable+KnockoutJS实现增删改查解决方案

    BootstrapTable+KnockoutJS实现增删改查解决方案 前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一 ...

  8. 【ASP.NET MVC】jqGrid 增删改查详解

    1   概述 本篇文章主要是关于JqGrid的,主要功能包括使用JqGrid增删查改,导入导出,废话不多说,直接进入正题. 2   Demo相关 2.1   Demo展示 第一部分 第二部分 2.2 ...

  9. 【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  10. BootstrapTable与KnockoutJS相结合实现增删改查功能

    http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...

随机推荐

  1. webpack -- element-ui 的按需引入

    简单说明原理: 使用babel-plugin-component实现按需引入.打包.将webpack配置成多入口,保证最终打包的目录结构符合babel-plugin-component插件的要求,实现 ...

  2. jvm之自动内存管理

    一.运行时数据区 程序计数器(线程私有) 1.程序计数器占用jvm内存较小,主要用来记录当前线程所执行的字节码的位置,因为jvm的多线程都是通过cpu对线程进行来回切换,所以在某个确定的时间cpu只会 ...

  3. 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序

    最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI ...

  4. JavaScrip基础学习笔记(一)

    一.三元表达式 1.1 什么是三元表达式 由三元运算符组成的式子我们称为三元表达式 1.2 语法结构 条件表达式 ? 表达式1 : 表达式2 1.3 执行思路 如果表达式为结果真 则返回表达式1的值, ...

  5. JUnit 5 单元测试教程

    点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 在软件开发过程中,我们通常都需要测试 ...

  6. os模块、sys模块、json模块、json模块实战

    目录 os模块 创建目录(文件夹) 删除目录(文件夹) 列举指定路径下内容名称 删除/重命名文件 获取/切换当前工作目录 动态获取项目根路径(重要) 判断路径是否存在(文件.目录) 路径拼接(重要) ...

  7. 原来 GitHub 不仅能学代码,还有这些东西

    我是风筝,公众号「古时的风筝」,专注于 Java技术 及周边生态. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 大家好,我是风筝. 今天介绍几 ...

  8. 真正“搞”懂HTTP协议05之What's HTTP?

    前面几篇文章,我从纵向的空间到横向的时间,再到一个具体的小栗子,可以说是全方位,无死角的覆盖了HTTP的大部分基本框架,但是我聊的都太宽泛了,很多内容都是一笔带过,再加上一句后面再说就草草结束了.并且 ...

  9. jquery操作内容

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 【Java EE】Day08 HTML&CSS

    一.表单 1.概述 采集数据,与服务器交互包括 form表单,需要提交则必须设置name属性,action方式主要包 get:参数会在地址栏显示(请求行),长度有限 post:参数被封装在请求体,参数 ...