zoukankan      html  css  js  c++  java
  • 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);
                }
            
  • 相关阅读:
    Java Object-Oriented:day11 【 Inner Classes 】
    Java Object-Oriented:day11 【 final 】
    Java Object-Oriented:day10 【 Inheritance】
    Java Object-Oriented:day10 【 Interfaces】
    深入剖析Kubernetes学习笔记:StatefulSet-MySQL集群(20)
    Java Object-Oriented:day09 【 Inheritance、Abstract Classes】
    Java Object-Oriented:day09 【 Inheritance、super、this】
    kubernetes云平台管理实战:常用命令大全(十二)
    Java API:day08 【static、Arrays、Math】
    Java API:day08 【String】
  • 原文地址:https://www.cnblogs.com/cherenshuishou4451/p/11754039.html
Copyright © 2011-2022 走看看