JsonHelper.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. public static class JsonHelper
  9. {
  10. public static T DeserializeFromFile<T>(string filePath)
  11. {
  12. if (File.Exists(filePath))
  13. {
  14. string json = File.ReadAllText(filePath);
  15. try
  16. {
  17. return JsonConvert.DeserializeObject<T>(json);
  18. }
  19. catch (Exception)
  20. {
  21. return default;
  22. }
  23. }
  24. return default;
  25. }
  26. public static T DeserializeFromString<T>(string json)
  27. {
  28. return JsonConvert.DeserializeObject<T>(json);
  29. }
  30. public static void WriteToFile(string path, string content)
  31. {
  32. try
  33. {
  34. using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
  35. using (var writer = new StreamWriter(fs))
  36. {
  37. writer.Write(content);
  38. writer.Flush();
  39. fs.Flush(true); // 强制刷新到底层存储介质
  40. }
  41. }
  42. catch (Exception ex)
  43. {
  44. Console.WriteLine("写入失败:" + ex.Message);
  45. }
  46. }
  47. public static void SerializeObject(string filePath, object obj)
  48. {
  49. // 序列化对象为字符串
  50. string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
  51. // 写入文件
  52. string directoryPath = Path.GetDirectoryName(filePath);
  53. if (directoryPath == "")
  54. //File.WriteAllText(filePath, json);
  55. WriteToFile(filePath, json);
  56. else if (!Directory.Exists(directoryPath))
  57. {
  58. Directory.CreateDirectory(directoryPath);
  59. //File.WriteAllText(filePath, json);
  60. WriteToFile(filePath, json);
  61. }
  62. else
  63. //File.WriteAllText(filePath, json);
  64. WriteToFile(filePath, json);
  65. }
  66. public static string SerializeObject(object obj)
  67. {
  68. // 序列化对象为字符串
  69. string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
  70. return json;
  71. }
  72. public static T CloneObject<T>(T obj)
  73. {
  74. return JsonConvert.DeserializeObject<T>(SerializeObject(obj));
  75. }
  76. }