(Newtonsoft)Json增删改查
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增删改查的更多相关文章
- 使用 Json.Net 对Json文本进行 增删改查
JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...
- javascript json对象操作(基本增删改查)
/** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * g ...
- Java对象转JSON时如何动态的增删改查属性
1. 前言 日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON字符串增加额外字段 假如我们有这样结 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...
- 微软Connect教程系列--自动生成增删改查页面工具介绍(二)
本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...
- BootstrapTable+KnockoutJS实现增删改查解决方案
BootstrapTable+KnockoutJS实现增删改查解决方案 前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一 ...
- 【ASP.NET MVC】jqGrid 增删改查详解
1 概述 本篇文章主要是关于JqGrid的,主要功能包括使用JqGrid增删查改,导入导出,废话不多说,直接进入正题. 2 Demo相关 2.1 Demo展示 第一部分 第二部分 2.2 ...
- 【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- BootstrapTable与KnockoutJS相结合实现增删改查功能
http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...
随机推荐
- 嵌入式-c语言基础:冒泡排序实现从大到小排列
#include<stdio.h> int main() { /*冒泡排序:从大到小*/ /*i=0 第1轮(i+1):需要比较9次(sizeArr-i-1)*/ /*i=1 第2轮(i+ ...
- 使用CRD扩展Kubernetes API
本文是如何创建 CRD 来扩展 Kubernetes API 的教程.CRD 是用来扩展 Kubernetes 最常用的方式,在 Service Mesh 和 Operator 中也被大量使用.因此读 ...
- hwlog--utils.go
// Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package hwlog provides the ...
- nginx rewrite参数 以及 $1、$2参数解析(附有生产配置实例)
在nginx的配置中,是否对rewrite的配置模糊不清,还有令人迷惑的$1.$2...参数,(其实$1.$2参数在shell脚本中经常用到,用来承接传递的参数).本篇从反向代理配置的角度帮助理解一下 ...
- updog:一款局域网传输文件的软件
前言 不知道你是否有过这样 的需求,在局域网传输文件,苦于没有好的软件支持,或者只能单向传输,updog可以完全解决这种问题 安装 pip3 install updog updog是python中的一 ...
- 解决linux vlc设置中文问题
解决方法 sudo apt install vlc-l10n
- feDisplacementMap滤镜实现水波纹效果,计算动态值。
参考资料 https://www.zhangxinxu.com/wordpress/2017/12/understand-svg-fedisplacementmap-filter/ 该文章已经讲的特别 ...
- hdoj笔记1000
1000,A+B problem #include <stdio.h>//要用EOF!! int main() { int a,b; while(scanf("%d%d" ...
- JavaSE流程学习图
- java Jdbc 简单方法
1.注册驱动(第一种方法) Class.forName(com.mysql.jdbc.Driver"); 2.获得连接DriverManager.getConnection(url,user ...