diff --git a/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/ToStringJsonConverter.cs b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/ToStringJsonConverter.cs index 8e6c9454..11069f08 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/ToStringJsonConverter.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/ToStringJsonConverter.cs @@ -5,9 +5,27 @@ namespace SPTarkov.Server.Core.Utils.Json.Converters; internal class ToStringJsonConverter : JsonConverter { - public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - throw new NotSupportedException($"Deserialization of {typeof(T).Name} from string is not supported."); + if (reader.TokenType == JsonTokenType.Null) + { + return default; + } + + if (reader.TokenType == JsonTokenType.String) + { + var value = reader.GetString(); + try + { + return (T?)Activator.CreateInstance(typeToConvert, value); + } + catch (Exception ex) + { + throw new JsonException($"Unable to convert \"{value}\" to {typeof(T).Name}.", ex); + } + } + + throw new JsonException($"Expected string to deserialize {typeof(T).Name} but got {reader.TokenType}."); } public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)