nuget
Microsoft.extensions.configuration;
Microsoft.extensions.configuration.JSON;
Newtonsoft.Json;
Newtonsoft.Json.Linq;
///
///Json文件的读写
引用Newtonsoft.Json
///
公共类jsonfilehelper
{
//注意: section是根节点
私有string _ JSON name;
私有string _ path;
私有配置配置{ get; set; }
publicjsonfilehelper (stringjsonname ) )。
{
_jsonName=jsonName;
if (! JSONname.EndSwith('.JSON ' ) )
_path=$'{jsonName}.json ';
else
_path=jsonName;
//reloadonchange=true*.JSON文件更改时重新加载
configuration=newconfigurationbuilder ()
. add (newjsonconfigurationsource (path=_ path,ReloadOnChange=true,Optional=true } ) )
. Build (;
}
///
读取Json并返回实体对象
///
///
public T Read ()=Read ) ');
///
从节点读取Json并返回实体对象
//
//
公共道路(字符串部分) )。
{
特里
{
using (varfile=new streamreader (_ path ) )
using (varreader=newjsontextreader (文件) )
{
varjobj=(jobject ) jToken.readfrom ) ) reader;
if (! string.isnullorwhitespace (section ) )
{
var secJt=jObj[section];
if(secjt!=空)
{
returnjsonconvert.deserialize object (se cjt.tostring () );
}
}
else
{
returnjsonconvert.deserialize object (jobj.tostring () );
}
}
}
catch(system.exceptionex )。
{
throw ex;
}
返回默认值(t;
}
//
读取Json并返回集合
//
//
公共列表读取列表()=读取列表) ' ';
//
//从节点读取Json返回集合
//
//
publiclistreadlist (字符串部分) )。
{
特里
{
using (varfile=new streamreader (_ path ) )
using (varreader=newjsontextreader (文件) )
{
varjobj=(jobject ) jToken.readfrom ) ) reader;
if (! string.isnullorwhitespace (section ) )
{
var secJt=jObj[section];
if(secjt!=空)
{
returnjsonconvert.deserialize object (se cjt.tostring () );
}
}
else
{
返回
JsonConvert.DeserializeObject>(jObj.ToString());}
}
}
catch (System.Exception ex)
{
throw ex;
}
return default(List);
}
///
/// 写入文件
///
/// 自定义对象
///
public void Write(T t) => Write("", t);
///
/// 写入指定section文件
///
/// 自定义对象
///
public void Write(string section, T t)
{
try
{
JObject jObj;
using (StreamReader file = new StreamReader(_path))
using (JsonTextReader reader = new JsonTextReader(file))
{
jObj = (JObject)JToken.ReadFrom(reader);
var json = JsonConvert.SerializeObject(t);
if (string.IsNullOrWhiteSpace(section))
jObj = JObject.Parse(json);
else
jObj[section] = JObject.Parse(json);
}
using (var writer = new StreamWriter(_path))
using (var jsonWriter = new JsonTextWriter(writer))
{
jObj.WriteTo(jsonWriter);
}
}
catch (System.Exception ex)
{
throw ex;
}
}
///
/// 删除指定section节点
///
///
public void Remove(string section)
{
try
{
JObject jObj;
using (StreamReader file = new StreamReader(_path))
using (JsonTextReader reader = new JsonTextReader(file))
{
jObj = (JObject)JToken.ReadFrom(reader);
jObj.Remove(section);
}
using (var writer = new StreamWriter(_path))
using (var jsonWriter = new JsonTextWriter(writer))
{
jObj.WriteTo(jsonWriter);
}
}
catch (System.Exception ex)
{
throw ex;
}
}
}
Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)
日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...
Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
INI 文件的读写操作
在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...
Android 对 properties文件的读写操作
-. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...
C++学习48 对ASCII文件的读写操作
如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...
Delphi- ini文件的读写操作
一.读INI文件示例 procedure TForm1.FormCreate(Sender: TObject); Var MyIni :Tinifile; glAppPath :string; beg ...
android报错及解决2--Sdcard进行文件的读写操作报的异常
报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...
java文件的读写操作
java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结. 1.根据数据的流向来分: 输出流:是用来写数据的,是由程序(内存)--- ...
python使用装饰器对文件进行读写操作&#39;及遍历文件目录
'''使用装饰器对文件进行读写操作''' # def check_permission(func): # '''演示嵌套函数定义及使用''' # def wrapper(*args,**kwargs) ...
随机推荐
Python之路【第十六篇】Django基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
ext 参考资料
http://extjs.org.cn/ 中文网站 http://www.sencha.com/ 英文网站 http://www.qeefee.com 个人总结
POJ 1847 Tram dij
分析:d[i]表示到i点,最少的操作数 #include #include #include #include< ...
js中this的四种使用方法
0x00:js中this的四种调用模式 1,方法调用模式 2,函数调用模式 3,构造器调用模式 4,apply.call.bind调用模式 0x01:第一种:方法调用模式 (也就是用.调用的)this ...
让Terminal显示git分支
vi ~/.bash_profile ### 显示git分支 parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' ...
COM组件转换为.NET元数据
.net开发中,需要调用一些COM组件,COM组件的元素转化为.net的元数据后才能很好的调用. 下面贴出我转的过程. 首先,打开C:Program Files (x86)Microsoft SD ...
本地代码上传到git
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
Git入门基础详情教程
前言 写了一篇文章还觉得不错,继续写了,那么继续写Git 基础知识. Git 官网:https: ...
iOS项目之解析HTML数据
最近因为需求,一直在做HTML数据的解析,从网页中去获取需要的数据,然后展示到自己的app中. 在网上找了很多资料,大多都是TFHpple这个第三方框架,能够根据标签节点获取对应的数据,但是现在我需要 ...
python基础之函数对象,嵌套,名称空间和作用域
函数对象: 函数是第一类对象的含义是函数可以被当作数据处理 函数可用于: def func(): print(‘func’) 1.引用 f = func 把内存地址赋值给f 2.当作参数传给一个函 ...