VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 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);
            }
        
复制代码

 

不积跬步无以至千里

相关教程