using System.Text.Json;
using System.Text.Json.Serialization;
using LootDumpProcessor.Storage;

namespace LootDumpProcessor.Serializers.Json;

public class NetJsonSerializer : IJsonSerializer
{
    private static JsonSerializerOptions _serializeOptions = new()
    {
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
        Converters =
        {
            new NetJsonKeyConverter(),
            new JsonStringEnumConverter()
        }
    };
    public string Serialize<T>(T obj)
    {
        return JsonSerializer.Serialize(obj, _serializeOptions);
    }

    public T Deserialize<T>(string obj)
    {
        return JsonSerializer.Deserialize<T>(obj, _serializeOptions);
    }
}