using System.Text.Json; using System.Text.Json.Serialization; namespace Shrink.Utility; public static class JsonUtility { public static void WriteJsonToFile(string filePath, T data) { try { var json = JsonSerializer.Serialize(data); File.WriteAllText(filePath, json); } catch (Exception ex) { System.Console.WriteLine($"写入文件出错: {filePath}: {ex.Message}"); throw; } } public static T ReadJsonFromFile(string filePath) { try { var json = File.ReadAllText(filePath); return JsonSerializer.Deserialize(json, new JsonSerializerOptions { ReferenceHandler = ReferenceHandler.Preserve })!; } catch (Exception ex) { System.Console.WriteLine($"读取文件出错: {filePath}: {ex.Message}"); throw; } } public static T ReadOrCreateJsonFile(string filePath, Func createFunc) { if (File.Exists(filePath)) { return ReadJsonFromFile(filePath); } var newData = createFunc(); WriteJsonToFile(filePath, newData); return newData; } }