| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using System.Web.Script.Serialization;
- using static TimedUpload.QuartzJobs.SFTPUploadJob;
- public class JsonExporter
- {
- public void ExportDailyDataToJson(List<DailyData> dailyDataList, string outputDirectory)
- {
- if (!Directory.Exists(outputDirectory))
- {
- Directory.CreateDirectory(outputDirectory);
- }
- var serializer = new JavaScriptSerializer();
- serializer.RegisterConverters(new[] { new CustomJsonConverter() });
- serializer.MaxJsonLength = int.MaxValue;
- foreach (var dailyData in dailyDataList)
- {
- if (dailyData.RecordCount > 0)
- {
- string fileName = $"{dailyData.Date:yyyyMMdd}.json";
- string filePath = Path.Combine(outputDirectory, fileName);
- // 手动构建JSON字符串以确保日期格式正确
- string json = BuildJsonString(dailyData);
- File.WriteAllText(filePath, json, Encoding.UTF8);
- Console.WriteLine($"已导出 {dailyData.Date:yyyy-MM-dd} 的数据,共 {dailyData.RecordCount} 条记录");
- }
- }
- }
- private string BuildJsonString(DailyData dailyData)
- {
- var sb = new StringBuilder();
- sb.Append("{");
- sb.Append($"\"Date\":\"{dailyData.Date:yyyy-MM-dd}\",");
- sb.Append($"\"RecordCount\":{dailyData.RecordCount},");
- sb.Append("\"Records\":[");
- for (int i = 0; i < dailyData.Records.Count; i++)
- {
- var record = dailyData.Records[i];
- sb.Append("{");
- sb.Append($"\"ReadingDT\":\"{record.ReadingDT:yyyy-MM-dd HH:mm:ss}\",");
- sb.Append($"\"Reading\":{record.Reading},");
- sb.Append($"\"ElecAddress\":\"{record.ElecAddress}\"");
- sb.Append("}");
- if (i < dailyData.Records.Count - 1)
- {
- sb.Append(",");
- }
- }
- sb.Append("]}");
- return sb.ToString();
- }
- public void ExportAllToSingleJson(List<DailyData> dailyDataList, string filePath)
- {
- var sb = new StringBuilder();
- sb.Append("[");
- for (int i = 0; i < dailyDataList.Count; i++)
- {
- var dailyData = dailyDataList[i];
- sb.Append("{");
- sb.Append($"\"Date\":\"{dailyData.Date:yyyy-MM-dd}\",");
- sb.Append($"\"RecordCount\":{dailyData.RecordCount},");
- sb.Append("\"Records\":[");
- for (int j = 0; j < dailyData.Records.Count; j++)
- {
- var record = dailyData.Records[j];
- sb.Append("{");
- sb.Append($"\"ReadingDT\":\"{record.ReadingDT:yyyy-MM-dd HH:mm:ss}\",");
- sb.Append($"\"Reading\":{record.Reading},");
- sb.Append($"\"ElecAddress\":\"{record.ElecAddress}\"");
- sb.Append("}");
- if (j < dailyData.Records.Count - 1)
- {
- sb.Append(",");
- }
- }
- sb.Append("]}");
- if (i < dailyDataList.Count - 1)
- {
- sb.Append(",");
- }
- }
- sb.Append("]");
- File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
- }
- }
|