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