今天花 了点时间来使用 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配置文件内容的更多相关文章

  1. 第三节:框架前期准备篇之利用Newtonsoft.Json改造MVC默认的JsonResult

    一. 背景 在MVC框架中,我们可能经常会用到 return Json(),而Json方法内部又是一个JsonResult类,那么JsonResult内部又是什么原理呢?在MVC框架中,各种xxxRe ...

  2. Newtonsoft.Json读取txt文件中json数据并存到SQL service 数据库!

    using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...

  3. 利用Newtonsoft.Json实现Json序列化与反序列化

    在项目中用到了Newtonsoft.Json来实现序列化和反序列化,在这里写下实现代码. 1.创建类用于排除不序列化的属性 public class ExcludePropertiesContract ...

  4. C# 利用Newtonsoft.Json进行Json序列化与反序列化

    我们可以通过DataContractJsonSerializer类来序列化一个对象为json字符串. public class JsonConvert<T> { public static ...

  5. C# 利用Newtonsoft.Json 序列化生成Json数据

    现在需要将一些数据转化成json格式返回给调用者, 使用Newtonsoft.Json.DLL库来帮助我们序列化 举例: {"300033":{"MC":&qu ...

  6. java web filter读取classpath配置文件内容

    以下demo,从类路径classpath中获取venus.properties(本项目中用到的文件),思路是在初始化的时候读取,然后放在局部变量里面. package club.codeapes.we ...

  7. C# Newtonsoft.Json 读取文件,返回json字符串

    第一种方法: public object getData2() { string content; using (StreamReader sr = new StreamReader(Server.M ...

  8. 利用Properties来读取JDBC配置文件

    看到这样的标题,肯定会有人问,要连接数据库我直接验证,加载驱动,建立连接等等按步骤来不就行了,

  9. CSharp读取json配置文件内容

    步骤 读取配置文件转换成字符串,代码如下 string contents = System.IO.File.ReadAllText("config.json"); 注意:该语句会抛 ...

随机推荐

  1. 用for循环数组去重

    <script> var arr=["a","e","w","f","a"," ...

  2. mac上配置python的安装环境杂记

    现在的python的包都是通过pip安装的. 所以非常重要的一步是配置pip的安装源 vi ~/.pip/pip.conf [global] index-url = http://pypi.douba ...

  3. Linux强制关掉其他ssh登录的用户

    Linux强制关掉其他ssh登录的用户 首先 用who命令查看登录的iproot pts/0 162.16.16.155 14:30 0.00s 0.07s 0.05s wroot pts/1 162 ...

  4. 8.InfluxDB-InfluxQL基础语法教程--ORDER BY子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) 在InfluxDB中 ...

  5. pipenv 管理虚拟环境

    pipenv --python 3.6 创建虚拟环境 vim Pipfile —> 修改源 为阿里云镜像 https://mirrors.aliyun.com/pypi/simple [pack ...

  6. qos-server can not bind localhost:22222, dubbo version: 2.6.0, current host: 127.0.0.1【问题解决】

    好吧,这个问题比较low,但是记录一下,以免后期遗忘. 说白了,这个问题就是端口被占用了. 问题: qos-server can not bind localhost:22222, dubbo ver ...

  7. 七、union联合

    Union:联合 作用:把2次或多次查询结果合并起来 案例(认识union):我想把商品价格大于5000元的和商品价格小于20元的商品都取出来 1.Select * from goods where ...

  8. 【洛谷P3749】[六省联考2017]寿司餐厅(网络流)

    洛谷 题意: 给出\(n\)份寿司,现可以选取任意多次连续区间内的寿司,对于区间\([l,r]\),那么贡献为\(\sum_{i=l}^r \sum_{j=i}^rd_{i,j}\)(对于相同的\(d ...

  9. 201871010110-李华《面向对象程序设计(java)》第十六周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  10. 使用hangfire在xunit中

    框架为:abp hangfire配置连接:https://aspnetboilerplate.com/Pages/Documents/Hangfire-Integration 在单元测试中如何配置呢? ...