nuget

Microsoft.Extensions.Configuration;

Microsoft.Extensions.Configuration.Json;

Newtonsoft.Json;

Newtonsoft.Json.Linq;

///

/// Json文件读写

/// 引用Newtonsoft.Json

///

public class JsonFileHelper

{

//注意:section为根节点

private string _jsonName;

private string _path;

private IConfiguration Configuration { get; set; }

public JsonFileHelper(string jsonName)

{

_jsonName = jsonName;

if (!jsonName.EndsWith(".json"))

_path = $"{jsonName}.json";

else

_path = jsonName;

//ReloadOnChange = true 当*.json文件被修改时重新加载

Configuration = new ConfigurationBuilder()

.Add(new JsonConfigurationSource { Path = _path, ReloadOnChange = true, Optional = true })

.Build();

}

///

/// 读取Json返回实体对象

///

///

public T Read() => Read("");

///

/// 根据节点读取Json返回实体对象

///

///

public T Read(string section)

{

try

{

using (var file = new StreamReader(_path))

using (var reader = new JsonTextReader(file))

{

var jObj = (JObject)JToken.ReadFrom(reader);

if (!string.IsNullOrWhiteSpace(section))

{

var secJt = jObj[section];

if (secJt != null)

{

return JsonConvert.DeserializeObject(secJt.ToString());

}

}

else

{

return JsonConvert.DeserializeObject(jObj.ToString());

}

}

}

catch (System.Exception ex)

{

throw ex;

}

return default(T);

}

///

/// 读取Json返回集合

///

///

public List ReadList() => ReadList("");

///

/// 根据节点读取Json返回集合

///

///

public List ReadList(string section)

{

try

{

using (var file = new StreamReader(_path))

using (var reader = new JsonTextReader(file))

{

var jObj = (JObject)JToken.ReadFrom(reader);

if (!string.IsNullOrWhiteSpace(section))

{

var secJt = jObj[section];

if (secJt != null)

{

return JsonConvert.DeserializeObject>(secJt.ToString());

}

}

else

{

return 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&plus;&plus;学习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使用装饰器对文件进行读写操作&&num;39&semi;及遍历文件目录

'''使用装饰器对文件进行读写操作''' # 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&lt ...

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组件转换为&period;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.当作参数传给一个函 ...

netcore读取json文件_NetCore 对Json文件的读写操作相关推荐

  1. python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题

    说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...

  2. java word 读取excel数据_在Java中实现读写操作Word、Excel等文件

    Jakarta的POI项目提供了一组操纵Windows文档的Java API,如下几个类提供了操作Excel文件的方便的途径:HSSFWorkbook.HSSFSheet.HSSFRow.HSSFCe ...

  3. Linux学习之路4——文件IO打开、创建、读写操作

    1.使用man 2 open.man 2 creat.man 2 write.man 2 read命令获取头文件 语法: int open(const char *pathname, int flag ...

  4. Python3之文件的读、写、修改操作

    文件yesterday Somehow, it seems the love I knew was always the most destructive kind 不知为何,我经历的爱情总是最具毁灭 ...

  5. Java文件读写操作(c站最全!一篇就够了)

    写在前面   你们好,我是小庄.很高兴能和你们一起学习Java.如果您对Java感兴趣的话可关注我的动态.   写博文是一种习惯,在这过程中能够梳理和巩固知识. Java文件读写操作 一.File类 ...

  6. netcore读取json文件_.net core读取json格式的配置文件

    在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...

  7. 安卓加载asset中的json文件_Android中读取asset路径下本地json文件

    最近自己写个小demo,用到了assets文件里面的内容.猛的没想起来怎么使用.就记录下来 移动端开发中,和后台的交互方式不外乎json和xml,由于json的轻量级以及易用性,所以现在的交互协议基本 ...

  8. python3读写excel文件_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

  9. python从sqlserver提取数据_通过Python读取sqlserver数据写成json文件的总结

    最近在做将sqlserver的数据迁移到redshift上面,然后再做的过程当中出现了很多问题.(通过sqlserver 读取数据,然后写成json文件然后长传到S3上面,然后通过S3copy的形式将 ...

  10. python循环读取excel存入列表_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

最新文章

  1. 【老鸟分享】Linux命令行终端提示符多种实用技巧!
  2. pytorch移动端,官方helloworld不同模型仍旧好用
  3. python3 读取文件的最后一行 非空行
  4. sscanf,sprintf,fscanf,fprintf 系列函数
  5. Oracle之垂直水平分库分表(一)
  6. Ubuntu16.04以root身份登入!
  7. LeetCode算法
  8. What Every Computer Programmer Should Know About Windows API, CRT, and the Standard C++ Library
  9. 天庭最牛系统 推荐下载_围观RecSys2020 | 推荐系统顶会说了啥?(附论文打包下载)...
  10. 一步一步使用标c编写跨平台图像处理库_让一个图像变成反向图像
  11. 【指南 】北理珠第十届C语言程序设计挑战杯
  12. 阿里云服务器导出方案
  13. 第三方支付4(前端实现支付)
  14. 淘宝模拟登录2解决滑动验证问题
  15. 什么样的公司需要IT外包?
  16. 调整HTML5画布中图像的大小
  17. 谈谈数据挖掘和机器学习
  18. C++中使用代码修改字体颜色
  19. zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置
  20. 微信小程序---canvas

热门文章

  1. head first设计模式之设计原则
  2. 各种数据集汇总——转载而来
  3. 模仿概念版QQ登录界面(超炫)
  4. android刷机工具 原理,Android 设备刷机教程
  5. android 手机主题制作,怎么制作手机主题?
  6. LCD1602温度显示程序设计流程
  7. LCD1602动态显示
  8. Bad CPU type in executable
  9. 强大的离线字典《Colordict》+多种词库下载地址
  10. Boblog热门日志、随机日志、热门Tags插件源代码