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);
}
}
}
}