// 批量导出采集记录private void BtnExportCollect_Click(object sender, EventArgs e){ // 模拟采集数据列表(实际从数据库/内存取) List<collectdata> dataList = new List<collectdata>() { new CollectData{CollectTime=DateTime.Now, StationNo="ST01", Value=12.3m, IsQualified=true}, new CollectData{CollectTime=DateTime.Now, StationNo="ST02", Value=11.8m, IsQualified=true} }; using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = "Json文件|*.json|所有文件|*.*"; if (sfd.ShowDialog() == DialogResult.OK) { bool success = JsonHelper.ExportJson(dataList, sfd.FileName); MessageBox.Show(success ? "批量导出成功" : "批量导出失败"); } }}// 批量导入采集记录private void BtnImportCollect_Click(object sender, EventArgs e){ using (OpenFileDialog ofd = new OpenFileDialog()) { ofd.Filter = "Json文件|*.json|所有文件|*.*"; if (ofd.ShowDialog() == DialogResult.OK) { List<collectdata>? dataList = JsonHelper.ImportJson<list<collectdata>>(ofd.FileName); if (dataList != null && dataList.Count > 0) { // 绑定到DataGridView(上位机显示列表标配) dgvCollect.DataSource = dataList; MessageBox.Show($"导入{dataList.Count}条记录"); } } }}
上位机适配关键注意事项
编码必须用UTF8,避免工控电脑中文乱码。
序列化加ReferenceLoopHandling.Ignore,解决工控对象(如 PLC 客户端)循环引用。
敏感配置(如密码)可先加密再序列化,导出后更安全。
大文件(>100MB,如海量采集记录)建议分块导出,避免内存溢出。
替代方案:若需兼容老系统,可换System.Text.Json(.NET Core 3.0 + 自带,无需 NuGet),只需替换 JsonHelper 内序列化方法。
</list<collectdata></collectdata></collectdata></collectdata></plcconfig></t></t>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!