使用Text.json解析Json文件

建立一个modbus变量类库

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JsonPractice
{
    public class Variable_Modbus
    {
        //变量名称
        public string VarName { get; set; }
        //存储区域
        public string StoreArea { get; set; }
        //地址
        public string Address { get; set; }
        //数据类型
        public string DataType { get; set; }
        //是否归档 是否存入数据库
        public string IsFiling { get; set; }
        //是否报警
        public string IsAlarm { get; set; }
        //是否制作报表
        public string IsReport { get; set; }
        //变量注释说明
        public string Note { get; set; }
        //绝对地址
        private string absoluteAddress;
        //判断存储区
        public string AbsoluteAddress
        {
            get
            {
                int store = 0;
                switch (StoreArea)//通过存储区判断并显示存储位置
                {
                    case "01 Coil Status(0x)":
                        store = 0;
                        break;
                    case "02 Input Status(1x)":
                        store = 1;
                        break;
                    case "03 Holding Register(4x)":
                        store = 4;
                        break;
                    case "04 Input Registers(3x)":
                        store = 3;
                        break;
                    default:
                        store = 4; //默认值
                        break;
                }
                absoluteAddress = (store * 10000 + Convert.ToInt32(Address)).ToString();//30001,40001开始
                return absoluteAddress;
            }
            set
            {
                value = absoluteAddress;
            }
        }
    }
}

建立一个helper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.Json;
using System.Text.Encodings.Web;

namespace Tool
{
    public static class JsonTool
    {
        public static string ToJson<T>(this T obj)
        {
            return JsonSerializer.Serialize(obj, typeof(T),
                new JsonSerializerOptions
                {
                    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
                });
        }
    }
}

解析json

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.Encodings.Web;
using Tool;
using System.IO;
using System.Xml;
//using Newtonsoft.Json;
using System.Text.Json;



namespace JsonPractice
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student() {Id=10001,Name="张三",Phonenumber="1505050505" };

            //var jsonstu = JsonSerializer.Serialize(stu, typeof(Student),
            //new JsonSerializerOptions
            //{
            //    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            //});

            //System.Text.Json.Utf8JsonReader
            //Console.WriteLine(JsonTool.ToJson(stu));
            //Console.ReadKey();
            //Student aa = JsonSerializer.Deserialize<Student>(fs, new JsonSerializerOptions
            //{
            //    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            //});
            //Console.WriteLine("{0},{1},{2}", aa.Id, aa.Name, aa.Phonenumber);
            //Console.ReadKey();

            //JsonSerializer.Serialize<Variable_Modbus>(fs, jsonstu,
            //   new JsonSerializerOptions
            //   {
            //       Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            //   });

            JsonSerializerOptions jso = new JsonSerializerOptions
            {
                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            };
            
            string FilePath = "D:\\jsontxt.json";
            string FilePath2 = "D:\\Variable_Modbus.json";
            FileStream fs = new FileStream(FilePath2, FileMode.Open);

            JsonDocument doc = JsonDocument.Parse(fs);
            List<Variable_Modbus> VarModbusList = new List<Variable_Modbus>();

            var ip = doc.RootElement.GetProperty("Root").GetProperty("Variable")[0].GetProperty("VarName");

            foreach (var item in doc.RootElement.GetProperty("Root").GetProperty("Variable").EnumerateArray())
            {
                Variable_Modbus objVar = new Variable_Modbus();

                objVar.VarName = item.GetProperty("VarName").GetString();
                objVar.Address = item.GetProperty("Address").GetString();
                objVar.DataType = item.GetProperty("DataType").GetString();
                objVar.StoreArea = item.GetProperty("StoreArea").GetString();
                objVar.IsFiling = item.GetProperty("IsFiling").GetString();
                objVar.IsAlarm = item.GetProperty("IsAlarm").GetString();
                objVar.IsReport = item.GetProperty("IsReport").GetString();
                objVar.Note = item.GetProperty("Note").GetString();
                objVar.AbsoluteAddress = item.GetProperty("AbsoluteAddress").GetString();
                VarModbusList.Add(objVar);
            }

            for (int i = 0; i < VarModbusList.Count; i++)
            {
                Console.WriteLine(VarModbusList[i].Note);
            }

            //var age = doc.RootElement.GetProperty("Variable");
            Console.WriteLine(VarModbusList[0].Note);
            Console.ReadKey();

            /// 转换XML为json
            //XmlDocument doc = new XmlDocument();

            //FileStream fs = new FileStream(FilePath2, FileMode.Open);
            //doc.Load(fs);
            //string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);
            //Console.WriteLine("XML -> JSON: {0}", json);
            //Console.ReadKey();

        }
    }
}

json文件

{
  "Root": {
    "Variable": [
      {
        "VarName": "LQT_Level",
        "Address": "0",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔液位",
        "IsFiling": "1",
        "IsAlarm": "1",
        "IsReport": "1",
        "AbsoluteAddress": "40000"
      },
      {
        "VarName": "LQT_InPre",
        "Address": "2",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔入口压力",
        "IsFiling": "1",
        "IsAlarm": "1",
        "IsReport": "1",
        "AbsoluteAddress": "40002"
      },
      {
        "VarName": "LQT_InTemp",
        "Address": "4",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔入口温度",
        "IsFiling": "1",
        "IsAlarm": "1",
        "IsReport": "1",
        "AbsoluteAddress": "40004"
      },
      {
        "VarName": "LQT_OutPre",
        "Address": "6",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔出口压力",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40006"
      },
      {
        "VarName": "LQT_OutTemp",
        "Address": "8",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔出口温度",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40008"
      },
      {
        "VarName": "LQT_BSPre",
        "Address": "10",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔补水压力",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40010"
      },
      {
        "VarName": "LQB1_Current",
        "Address": "12",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵电流",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40012"
      },
      {
        "VarName": "LQB1_Fre",
        "Address": "14",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵频率",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40014"
      },
      {
        "VarName": "LQB2_Current",
        "Address": "16",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#冷却泵电流",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40016"
      },
      {
        "VarName": "LQB2_Fre",
        "Address": "18",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#冷却泵频率",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40018"
      },
      {
        "VarName": "KYJ1_OutTemp",
        "Address": "20",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#空压机回水温度",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40020"
      },
      {
        "VarName": "KYJ2_OutTemp",
        "Address": "22",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#空压机回水温度",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40022"
      },
      {
        "VarName": "KYJ3_OutTemp",
        "Address": "24",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "3#空压机回水温度",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40024"
      },
      {
        "VarName": "CQG1_OutPre",
        "Address": "26",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#储气罐出口压力",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40026"
      },
      {
        "VarName": "CQG2_OutPre",
        "Address": "28",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#储气罐出口压力",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40028"
      },
      {
        "VarName": "CQG3_OutPre",
        "Address": "30",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "3#储气罐出口压力",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40030"
      },
      {
        "VarName": "Env_Temp",
        "Address": "32",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "露点温度",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40032"
      },
      {
        "VarName": "FQG_Temp",
        "Address": "34",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "分汽缸温度",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40034"
      },
      {
        "VarName": "FQG_Pre",
        "Address": "36",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "分汽缸压力",
        "IsFiling": "1",
        "IsAlarm": "0",
        "IsReport": "1",
        "AbsoluteAddress": "40036"
      },
      {
        "VarName": "LQT_InPre_H",
        "Address": "38",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔回水压力高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40038"
      },
      {
        "VarName": "LQT_InTemp_H",
        "Address": "40",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔回水温度高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40040"
      },
      {
        "VarName": "LQT_OutPre_H",
        "Address": "42",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔供水压力高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40042"
      },
      {
        "VarName": "LQT_OutTemp_H",
        "Address": "44",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "冷却塔供水温度高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40044"
      },
      {
        "VarName": "LQB1_Fre_H",
        "Address": "46",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵频率高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40046"
      },
      {
        "VarName": "LQB1_Fre_L",
        "Address": "48",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵频率低限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40048"
      },
      {
        "VarName": "LQB2_Fre_H",
        "Address": "50",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#冷却泵频率高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40050"
      },
      {
        "VarName": "LQB2_Fre_L",
        "Address": "52",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#冷却泵频率低限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40052"
      },
      {
        "VarName": "KYJ1_Fre_Set",
        "Address": "54",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#空压机频率给定",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40054"
      },
      {
        "VarName": "KYJ2_Fre_Set",
        "Address": "56",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#空压机频率给定",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40056"
      },
      {
        "VarName": "KYJ3_Fre_Set",
        "Address": "58",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "3#空压机频率给定",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40058"
      },
      {
        "VarName": "FQG_Temp_H",
        "Address": "60",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "分汽缸温度高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40060"
      },
      {
        "VarName": "FQG_Pre_H",
        "Address": "62",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "分汽缸压力高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40062"
      },
      {
        "VarName": "Env_Temp_H",
        "Address": "64",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "露点温度高限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40064"
      },
      {
        "VarName": "Env_Temp_L",
        "Address": "66",
        "DataType": "Float",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "露点温度低限",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40066"
      },
      {
        "VarName": "LQB1_Start_Ctl",
        "Address": "100",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵启动",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40100"
      },
      {
        "VarName": "LQB1_Stop_Ctl",
        "Address": "101",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵停止",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40101"
      },
      {
        "VarName": "LQB1_Run_State",
        "Address": "102",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#冷却泵运行状态",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40102"
      },
      {
        "VarName": "LQB2_Start_Ctl",
        "Address": "103",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#冷却泵启动",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40103"
      },
      {
        "VarName": "LQB2_Stop_Ctl",
        "Address": "104",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2# 冷却泵停止",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40104"
      },
      {
        "VarName": "LQB2_Run_State",
        "Address": "105",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#冷却泵运行状态",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40105"
      },
      {
        "VarName": "KYJ1In_Open_Ctl",
        "Address": "106",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#空压机进液阀开启",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40106"
      },
      {
        "VarName": "KYJ1In_Close_Ctl",
        "Address": "107",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#空压机进液阀关闭",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40107"
      },
      {
        "VarName": "KYJ1In_Run_State",
        "Address": "108",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "1#空压机进液阀状态",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40108"
      },
      {
        "VarName": "KYJ2In_Open_Ctl",
        "Address": "109",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#空压机进液阀开启",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40109"
      },
      {
        "VarName": "KYJ2In_Close_Ctl",
        "Address": "110",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#空压机进液阀关闭",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40110"
      },
      {
        "VarName": "KYJ2In_Run_State",
        "Address": "111",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "2#空压机进液阀状态",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40111"
      },
      {
        "VarName": "KYJ3In_Open_Ctl",
        "Address": "112",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "3#空压机进液阀开启",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40112"
      },
      {
        "VarName": "KYJ3In_Close_Ctl",
        "Address": "113",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "3#空压机 进液阀关闭",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40113"
      },
      {
        "VarName": "KYJ3In_Run_State",
        "Address": "114",
        "DataType": "Unsigned",
        "StoreArea": "03 Holding Register(4x)",
        "Note": "3#空压机进液阀状态",
        "IsFiling": "0",
        "IsAlarm": "0",
        "IsReport": "0",
        "AbsoluteAddress": "40114"
      }
    ]
  }
}

Excel转json

           //var age = doc.RootElement.GetProperty("Variable");
            //for (int i = 0; i < VarModbusList.Count; i++)
            //{
            //    Console.WriteLine(VarModbusList[i].Note);
            //}
            //Console.ReadKey();
            string FilePath3 = @"D:\DB\ConfigFile\shenhua.xlsx";

            //ExcelTool exceltool = new ExcelTool();

            using(var packege = new ExcelPackage(FilePath3))
            {
                int columnIndexVarName = 3; //第N列
                int columnIndexNote = 4;
                int rowStartIndex = 2;
                int rowEndIndex = 60;
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
                List<string> listVarName = new List<string>();
                List<string> listNote = new List<string>();
                ExcelWorksheet sheet = packege.Workbook.Worksheets[0];
                //var cell = sheet.Cells[50, columnIndex];
                for (int i = rowStartIndex; i < rowEndIndex; i++)
                {
                    var cell = sheet.Cells[i, columnIndexVarName];
                    listVarName.Add(cell.Value.ToString());
                }

                for (int i = rowStartIndex; i < rowEndIndex; i++)
                {
                    var cell = sheet.Cells[i, columnIndexNote];
                    listNote.Add(cell.Value.ToString());
                }


            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值