using System; using System.IO; using Newtonsoft.Json; namespace TeamAAS { /// /// JSON 文件持久化工具(Newtonsoft.Json)。 /// 供各设备管理器、配方、产品元数据等统一使用,替代各处重复的 /// SaveConfig/LoadConfig 样板代码。 /// public static class JsonFileStore { /// /// 保存对象到 JSON 文件(自动创建目录)。成功返回 true。 /// public static bool Save(string path, T data, JsonSerializerSettings settings = null) { if (string.IsNullOrEmpty(path) || data == null) return false; try { var dir = Path.GetDirectoryName(path); if (!string.IsNullOrEmpty(dir)) Directory.CreateDirectory(dir); var json = JsonConvert.SerializeObject(data, settings ?? new JsonSerializerSettings { Formatting = Formatting.Indented }); File.WriteAllText(path, json); return true; } catch (Exception ex) { AppLogger.Error($"JSON 保存失败: {path}", ex, nameof(JsonFileStore)); return false; } } /// /// 从 JSON 文件读取对象。文件不存在或反序列化失败返回 default(T)。 /// public static T Load(string path, JsonSerializerSettings settings = null) { if (string.IsNullOrEmpty(path) || !File.Exists(path)) return default(T); try { var json = File.ReadAllText(path); return JsonConvert.DeserializeObject(json, settings); } catch (Exception ex) { AppLogger.Error($"JSON 读取失败: {path}", ex, nameof(JsonFileStore)); return default(T); } } } }