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();
}
}
}