From b6539a329847dfe0836ff6d0b238615fa0d4c0c8 Mon Sep 17 00:00:00 2001 From: Eicy Date: Sat, 21 Dec 2024 01:00:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86Json=E6=93=8D=E4=BD=9C=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E5=8C=96(=E4=BD=86=E4=BB=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B0=8Fbug=E5=AF=BC=E8=87=B4=E4=B8=8D?= =?UTF-8?q?=E5=8F=AF=E7=94=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Eicy --- Utility/Data.cs.disable | 43 ------------------------------------ Utility/JsonUtility.cs | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 43 deletions(-) delete mode 100644 Utility/Data.cs.disable create mode 100644 Utility/JsonUtility.cs diff --git a/Utility/Data.cs.disable b/Utility/Data.cs.disable deleted file mode 100644 index e8ed830..0000000 --- a/Utility/Data.cs.disable +++ /dev/null @@ -1,43 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; -using Lagrange.Core.Common; - -namespace Shrink.Utility; - -public static class Data -{ - public static void SaveKeystore(BotKeystore keystore) => - File.WriteAllText("Keystore.json", JsonSerializer.Serialize(keystore)); - - public static BotDeviceInfo GetDeviceInfo() - { - if (File.Exists("DeviceInfo.json")) - { - var info = JsonSerializer.Deserialize(File.ReadAllText("DeviceInfo.json")); - if (info != null) return info; - - info = BotDeviceInfo.GenerateInfo(); - File.WriteAllText("DeviceInfo.json", JsonSerializer.Serialize(info)); - return info; - } - - var deviceInfo = BotDeviceInfo.GenerateInfo(); - File.WriteAllText("DeviceInfo.json", JsonSerializer.Serialize(deviceInfo)); - return deviceInfo; - } - public static BotKeystore? LoadKeystore() - { - try - { - var text = File.ReadAllText("Keystore.json"); - return JsonSerializer.Deserialize(text, new JsonSerializerOptions() - { - ReferenceHandler = ReferenceHandler.Preserve - }); - } - catch - { - return null; - } - } -} \ No newline at end of file diff --git a/Utility/JsonUtility.cs b/Utility/JsonUtility.cs new file mode 100644 index 0000000..0273af1 --- /dev/null +++ b/Utility/JsonUtility.cs @@ -0,0 +1,48 @@ +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; + } +} \ No newline at end of file