今天花 了点时间来使用 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. Spring获取springmvc的controller bean

    有个特殊需求,一个普通的类,定时任务,需要获取SpringMVC的controller对应的bean: 方法: WebApplicationContext wac = ContextLoader.ge ...

  2. Mysql 数据库部署(解压免安装)

    下载压缩包,解压. 在根目录下添加my.ini, 复制一下内容,保存. [mysqld] skip-grant-tables #绑定IPv4和3306端口 bind-address = 0.0.0.0 ...

  3. js:

    JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Net ...

  4. VIJOS-P1450 包裹快递

    洛谷 P1542 包裹快递 https://www.luogu.org/problem/P1542 JDOJ 1527: VIJOS-P1450 包裹快递 https://neooj.com/oldo ...

  5. ABP 不包裹返回的数据

    告诉abp不包裹返回的数据,返回的数据是什么 就是什么 不用再多包裹一次了. 用在 如:别人需要你提供接口 且给你指定了返回的数据结构. 源码:

  6. [LeetCode] 829. Consecutive Numbers Sum 连续数字之和

    Given a positive integer N, how many ways can we write it as a sum of consecutive positive integers? ...

  7. [LeetCode] 1123. Lowest Common Ancestor of Deepest Leaves 最深叶结点的最小公共父节点

    Given a rooted binary tree, return the lowest common ancestor of its deepest leaves. Recall that: Th ...

  8. [LeetCode] 623. Add One Row to Tree 二叉树中增加一行

    Given the root of a binary tree, then value v and depth d, you need to add a row of nodes with value ...

  9. 【搜索】L国的战斗之伞兵

    伞兵?SB?嘿嘿嘿 原题传送门 思路 这道题需要采用倒退的思想. 如果a[x][y]无风或可吹至无风区: 那么它南面如果是北风区,则北风区就也是无风或可吹至无风区(实际上就是可吹至无风区). 那么它北 ...

  10. 中移物联网Java面试-社招-三面(2019/07)

    个人情况 2017年毕业,普通本科,计算机科学与技术专业,毕业后在一个二三线小城市从事Java开发,2年Java开发经验.做过分布式开发,没有高并发的处理经验,平时做To G的项目居多.写下面经是希望 ...