using Newtonsoft.Json; using Newtonsoft.Json.Converters; using SzCore.DataObjects; namespace SzCore; public class SzParser { private readonly JsonSerializerSettings _jsonSettings = new() { Formatting = Formatting.Indented, Converters = { new StringEnumConverter() } }; public string SerializeDatasetToJson(SzDataset dataset) { try { return JsonConvert.SerializeObject(dataset, _jsonSettings); } catch (JsonException e) { throw new Exception("Dataset Serialization Error: " + e.Message); } } public SzDataset? DeserializeDataset(string jsonString) { try { return JsonConvert.DeserializeObject(jsonString, _jsonSettings); } catch (Exception e) { SZ.Logger.LogError("Could not deserialize JSON to type SzDataset: " + e.Message); return null; } } public string SerializeTemplateToJson(ISzTemplate template) { try { return JsonConvert.SerializeObject(template, _jsonSettings); } catch (Exception e) { throw new Exception("Template Serialization Error: " + e.Message); } } public T? DeserializeTemplate(string jsonString) { try { return JsonConvert.DeserializeObject(jsonString, _jsonSettings); } catch (Exception e) { SZ.Logger.LogError($"Could not deserialize JSON to type {typeof(T)}: " + e.Message); return default; } } }