C#利用newtonsoft.json读取.so配置文件内容
Posted 车人_水寿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#利用newtonsoft.json读取.so配置文件内容相关的知识,希望对你有一定的参考价值。
今天花 了点时间来使用 C#读取json文件 ,文件后缀为 .so文件 ,也是基于文件流的形式 获取 对象 ,然后解析;
之所以尝试 使用 json读取 ,是因为其配置文件的格式 更为友好 和方便,直观 且形象,当然 XML也是很方便的;
主要是多了一种读取 配置文件的方式;特记录下来,方便后续项目实际使用;
格式如图:
需要注意的是这种格式需注意编辑;
当然通过代码初始化和写入的话,会自动生成如上的格式的,本文只完成如何读取配置文件的信息;
引用的程序集如:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Newtonsoft.Json; using System.IO; using Newtonsoft.Json.Linq;
//获取 jobject的对象,及读取键值的方法
class JsonConfigHelper { public JObject jObject = null; public string this[string key] { get { string str = ""; if (jObject != null) { str = GetValue(key); } return str; } } public JsonConfigHelper(string path) { jObject = new JObject(); using (System.IO.StreamReader file = System.IO.File.OpenText(path)) { using (JsonTextReader reader = new JsonTextReader(file)) { jObject = JObject.Load(reader); } }; } public T GetValue<T>(string key) where T : class { return JsonConvert.DeserializeObject<T>(jObject.SelectToken(key).ToString()); } public string GetValue(string key) { return Regex.Replace((jObject.SelectToken(key).ToString()), @"\\s", ""); } }
读取不同格式的键的内容的方法:
try { JObject myjobj; JsonConfigHelper helper = new JsonConfigHelper(filepath); myjobj = helper.jObject as JObject;//获取Jobject对象 int i = myjobj.Count; //当前对象的节点的数量 string str5 = (string)myjobj["sex"];//直接读取当前键值 MessageBox.Show(str5); JObject myjobj666; myjobj666 = myjobj["Colleague"]["财务部"] as JObject;//当前节点下的子节点作为jobject对象 //实际测试过程中会异常报错未实例化,这是因为配件文件的保存格式问题,UTF-8 string str3 = (string)myjobj666["account"]; MessageBox.Show(str3); string str1 = helper["SOCLASS[0].Name"];// MessageBox.Show(str1); JToken jken = myjobj["SOCLASS"];//键对象["SO"]内存在多组数据,读取的格式 foreach (JObject myobject in jken) { string strr = (string)myobject["Name"];//读取每组节点下的某个键值的数据 MessageBox.Show(strr); } if (myjobj.ContainsKey("SOCLASS")) //判断jobject对象中是否存在"SO"这个键对象 { MessageBox.Show("done"); } } catch (Exception ex) { MessageBox.Show(ex.Message); }
以上是关于C#利用newtonsoft.json读取.so配置文件内容的主要内容,如果未能解决你的问题,请参考以下文章
C# Newtonsoft.Json 读取文件,返回json字符串
c# 在.NET使用Newtonsoft.Json转换,读取,写入json
c# 读取json的问题,JObject不能强转成JArray
读取 webapi 2 令牌时读取 HttpResponseMessage.Content 会引发 Newtonsoft.Json.JsonReaderException