netcore读取json文件_NetCore 对Json文件的读写操作
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++學習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.當作參數傳給一個函 ...
總結
以上是生活随笔為你收集整理的netcore读取json文件_NetCore 对Json文件的读写操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “export ‘default‘ (i
- 下一篇: python easygui进度条_Py