using Newtonsoft.Json; using System.Collections.Generic; using System.IO; using System.Linq; namespace Muchinfo.PC.Common.Bosn { public class JsonHelper { /// /// Loads the data. /// /// /// The file path. /// List{``0}. public static List LoadData(string filePath) { var result = new List(); if (!File.Exists(filePath)) return result; try { var json = File.ReadAllText(filePath); result = JsonConvert.DeserializeObject>(json, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); return result; } catch { return new List(); } } /// /// Saves the data. /// /// /// The file path. /// The source. /// The comparer. /// if set to true [is override]. public static void SaveData(string filePath, T source, IEqualityComparer comparer, bool isOverride = false) { if (null == source) return; var list = new List() { source }; SaveData(filePath, list, comparer, isOverride); } /// /// Saves the data. /// /// /// The file path. /// The list. /// The comparer. /// if set to true [is override]. public static void SaveData(string filePath, List list, IEqualityComparer comparer, bool isOverride = false) { if (null == list) return; var folderPath = Path.GetDirectoryName(filePath); if (string.IsNullOrWhiteSpace(folderPath)) return; if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath); List data; if (isOverride && File.Exists(filePath)) { File.Delete(filePath); data = list; } else { data = LoadData(filePath) ?? new List(); data = list.Union(data, comparer).ToList(); } var json = JsonConvert.SerializeObject(data, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); var file = File.CreateText(filePath); file.Write(json); file.Close(); } } }