60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using System.Text.Json;
|
|
using SzCore.DataObjects;
|
|
|
|
namespace SzCore;
|
|
|
|
public class SzParser
|
|
{
|
|
|
|
private readonly JsonSerializerOptions _jsonOptions = new() { WriteIndented = true };
|
|
|
|
public string SerializeDatasetToJson(SzDataset dataset)
|
|
{
|
|
try
|
|
{
|
|
var jsonString = JsonSerializer.Serialize(dataset, _jsonOptions);
|
|
return jsonString;
|
|
}
|
|
catch (JsonException e)
|
|
{
|
|
throw new Exception("Parse Error: " + e.Message);
|
|
}
|
|
}
|
|
|
|
public SzDataset? DeserializeDataset(string jsonString)
|
|
{
|
|
try
|
|
{
|
|
var result = JsonSerializer.Deserialize<SzDataset>(jsonString, _jsonOptions);
|
|
return result;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
SZ.Logger.LogError("Could not deserialize JSON to type SzDataset: " + e.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public bool SaveDataset(SzDataset dataset)
|
|
{
|
|
var datasetPath = Path.Combine(SZ.LocalFileManager.DatasetsPath, dataset.Id, "dataset.json");
|
|
try
|
|
{
|
|
return SZ.LocalFileManager.SaveFile(datasetPath, SerializeDatasetToJson(dataset));
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
SZ.Logger.LogError("Error saving dataset: " + e.Message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public SzDataset? LoadDataset(string datasetId)
|
|
{
|
|
var datasetPath = Path.Combine(SZ.LocalFileManager.DataPath, "datasets", datasetId, "dataset.json");
|
|
var json = SZ.LocalFileManager.LoadFile(datasetPath);
|
|
return json is null ? null : DeserializeDataset(json);
|
|
}
|
|
}
|
|
|