JsonHelper.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Newtonsoft.Json;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. namespace Muchinfo.PC.Common.Bosn
  6. {
  7. public class JsonHelper
  8. {
  9. /// <summary>
  10. /// Loads the data.
  11. /// </summary>
  12. /// <typeparam name="T"></typeparam>
  13. /// <param name="filePath">The file path.</param>
  14. /// <returns>List{``0}.</returns>
  15. public static List<T> LoadData<T>(string filePath)
  16. {
  17. var result = new List<T>();
  18. if (!File.Exists(filePath)) return result;
  19. try
  20. {
  21. var json = File.ReadAllText(filePath);
  22. result = JsonConvert.DeserializeObject<List<T>>(json, new JsonSerializerSettings
  23. {
  24. NullValueHandling = NullValueHandling.Ignore
  25. });
  26. return result;
  27. }
  28. catch
  29. {
  30. return new List<T>();
  31. }
  32. }
  33. /// <summary>
  34. /// Saves the data.
  35. /// </summary>
  36. /// <typeparam name="T"></typeparam>
  37. /// <param name="filePath">The file path.</param>
  38. /// <param name="source">The source.</param>
  39. /// <param name="comparer">The comparer.</param>
  40. /// <param name="isOverride">if set to <c>true</c> [is override].</param>
  41. public static void SaveData<T>(string filePath, T source, IEqualityComparer<T> comparer, bool isOverride = false)
  42. {
  43. if (null == source) return;
  44. var list = new List<T>() { source };
  45. SaveData(filePath, list, comparer, isOverride);
  46. }
  47. /// <summary>
  48. /// Saves the data.
  49. /// </summary>
  50. /// <typeparam name="T"></typeparam>
  51. /// <param name="filePath">The file path.</param>
  52. /// <param name="list">The list.</param>
  53. /// <param name="comparer">The comparer.</param>
  54. /// <param name="isOverride">if set to <c>true</c> [is override].</param>
  55. public static void SaveData<T>(string filePath, List<T> list, IEqualityComparer<T> comparer, bool isOverride = false)
  56. {
  57. if (null == list) return;
  58. var folderPath = Path.GetDirectoryName(filePath);
  59. if (string.IsNullOrWhiteSpace(folderPath)) return;
  60. if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath);
  61. List<T> data;
  62. if (isOverride && File.Exists(filePath))
  63. {
  64. File.Delete(filePath);
  65. data = list;
  66. }
  67. else
  68. {
  69. data = LoadData<T>(filePath) ?? new List<T>();
  70. data = list.Union(data, comparer).ToList();
  71. }
  72. var json = JsonConvert.SerializeObject(data, new JsonSerializerSettings
  73. {
  74. NullValueHandling = NullValueHandling.Ignore
  75. });
  76. var file = File.CreateText(filePath);
  77. file.Write(json);
  78. file.Close();
  79. }
  80. }
  81. }