C#--使用json配置文件方法【可读写配置,适合小项目】(包含读取Json中文乱码解决方法)

1,添加jsconfig1.json配置文件

 2,编辑好json文件

 3,在bin目录中新建一个Config文件夹,把json文件复制过来

 

4,新建配置类

注意:类的属性名要跟json文件的可以名要保持一致

需要添加引用Newtonsoft.json

需要添加引用System.Windows.Forms

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace Model
{
    public class ServerSettings
    {
        static ServerSettings()
        {
            //【注意】有中文会乱码
            //var jsonString = File.ReadAllText(Path.Combine(Application.StartupPath, "Config/app.json"));

            //【解决中文乱码方法】
            //eadAllText方法有:重载函数可以指定编码
            var jsonString = File.ReadAllText(Path.Combine(Application.StartupPath, "Config/app.json"), System.Text.Encoding.Default);
            _default = (ServerSettings)JsonConvert.DeserializeObject(jsonString, typeof(ServerSettings));
        }

        static ServerSettings _default;

        public static ServerSettings Default
        {
            get
            {
                return _default;
            }
        }

        public static void Save()
        {
            string jsonStr = JsonConvert.SerializeObject(Default);
            File.WriteAllText(Path.Combine(Application.StartupPath, "Config/app.json"), jsonStr, System.Text.Encoding.Default);
        }

        /// <summary>
        /// 控制器端口
        /// </summary>
        public int Port
        {
            get; set;
        }
        /// <summary>
        /// 控制器IP
        /// </summary>
        public string Ip
        {
            get; set;
        }

        public int Port_2
        {
            get; set;
        }
        public string Ip_2
        {
            get; set;
        }

        /// <summary>
        /// 轴数量
        /// </summary>
        public int SpindleNumber
        {
            get; set;
        }

        /// <summary>
        /// 设备名称
        /// </summary>
        public string DeviceName
        {
            get; set;
        }

        /// <summary>
        /// 从机ID
        /// </summary>
        public byte SlaveId
        {
            get; set;
        }

        /// <summary>
        /// 是否自动ping控制器IP
        /// </summary>
        public bool IsAutoPingIp
        {
            get; set;
        }

        /// <summary>
        /// 自动ping控制器IP
        /// </summary>
        public string AutoPingIp
        {
            get; set;
        }

        public string AutoPingIp_2
        {
            get; set;
        }

        /// <summary>
        /// 是否发送条码,客户端
        /// </summary>
        public bool IsSendSN
        {
            get; set;
        }

        /// <summary>
        /// 是否接收条码,服务端
        /// </summary>
        public bool IsRecevieSN
        {
            get; set;
        }

        public string ServerIp
        {
            get; set;
        }

        public string ServerPort
        {
            get; set;
        }

        /// <summary>
        /// 是否检查密码
        /// </summary>
        public bool IsCheckPassword
        {
            get; set;
        }

        /// <summary>
        /// 密码
        /// </summary>
        public string Password
        {
            get; set;
        }

        /// <summary>
        /// 收否预拧紧
        /// </summary>
        public bool IsPreTightening
        {
            get; set;
        }

        /// <summary>
        /// 预拧紧程序号
        /// </summary>
        public string PrePsetNo
        {
            get; set;
        }
        /// <summary>
        /// 是否有PLC
        /// </summary>
        public bool IsUsePLC
        {
            get; set;
        }

        /// <summary>
        /// PLC的端口
        /// </summary>
        public int PLCPort
        {
            get; set;
        }
        /// <summary>
        /// PLC的IP
        /// </summary>
        public string PLCIp
        {
            get; set;
        }

        /// <summary>
        /// PLC的端口
        /// </summary>
        public int PLCPort_2
        {
            get; set;
        }
        /// <summary>
        /// PLC的IP
        /// </summary>
        public string PLCIp_2
        {
            get; set;
        }
        /// <summary>
        /// 是否自动接收工艺文件,25.06.30
        /// </summary>
        public bool IsAutoReceiveSop
        {
            get; set;
        }

        /// <summary>
        /// 接收工艺文件的服务端口,25.06.30
        /// </summary>
        public int SopServerPort
        {
            get; set;
        }
        /// <summary>
        /// 接收工艺文件的服务IP,25.06.30
        /// </summary>
        public string SopServerIp
        {
            get; set;
        }

        private string _barcodeFileName = "总装二分厂拧紧机改扫码-各车型对应力矩.xlsx";
        /// <summary>
        /// 接收工艺文件的服务IP,25.06.30
        /// </summary>
        public string BarcodeFileName
        {
            get { return _barcodeFileName; }
            set { _barcodeFileName = value; }
        }

    }
}

  

5,读取Json使用JSON:

            #region PLC 

            //初始化modbusmaster
            modbusFactory = new ModbusFactory();
            //在本地测试 所以使用回环地址,modbus协议规定端口号 502
            master = modbusFactory.CreateMaster(new TcpClient(ServerSettings.Default.SlaveIp,
                ServerSettings.Default.SlavePort));

            #endregion

  

6,保存(写入Json)

        private void btn_saveProduct_BtnClick(object sender, EventArgs e)
        {
            FrmLogin frmLogin = new FrmLogin() { TopMost = true };
            DialogResult dialogResult2 = frmLogin.ShowDialog();
            if (dialogResult2 == DialogResult.OK)
            {
                ServerSettings.Default.IsAutoReceiveSop = chk_receive.Checked;
                ServerSettings.Save();
                MessageBox.Show("修改成功,重启软件后生效", "参数修改");
            }
            else { return; }

        }

7,特别注意:(中文逗号报错)

 

posted @ 2021-05-31 23:53  包子789654  阅读(2728)  评论(0)    收藏  举报