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,特别注意:(中文逗号报错)


浙公网安备 33010602011771号