using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace Entries { public class Entry { public string Target { get; set; } public string Arguments { get; set; } public string Icon { get; set; } public int IconIndex { get; set; } public string Name { get; set; } public string Description { get; set; } } public class EntryList { public string FilePath = null; public List<Entry> Entries; public static EntryList FromString(string contents) { Entry[] entries = (Entry[])JsonSerializer.Deserialize(contents, typeof(Entry[]), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true, ReadCommentHandling = JsonCommentHandling.Skip, AllowTrailingCommas = true }); return new EntryList { Entries = new List<Entry>(entries) }; } public static EntryList FromFile(string path) { string contents = ""; using (FileStream input = File.OpenRead(path)) { contents = new StreamReader(input).ReadToEnd(); } EntryList entryList = FromString(contents); if (entryList != null) entryList.FilePath = Path.GetFullPath(path); return entryList; } public override string ToString() { return JsonSerializer.Serialize(Entries.ToArray(), typeof(Entry[]), new JsonSerializerOptions() { WriteIndented = true }); } public void WriteToFile(string path) { using (FileStream output = File.Create(path)) { new StreamWriter(output).Write(ToString()); } } } }