diff --git a/Archipelago.MultiClient.Net/Converters/AttemptingStringEnumConverter.cs b/Archipelago.MultiClient.Net/Converters/AttemptingStringEnumConverter.cs new file mode 100644 index 00000000..7944b5a1 --- /dev/null +++ b/Archipelago.MultiClient.Net/Converters/AttemptingStringEnumConverter.cs @@ -0,0 +1,18 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System; + +public class AttemptingStringEnumConverter : StringEnumConverter +{ + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + try + { + return base.ReadJson(reader, objectType, existingValue, serializer); + } + catch (JsonSerializationException) + { + return null; + } + } +} diff --git a/Archipelago.MultiClient.Net/Models/JsonMessagePart.cs b/Archipelago.MultiClient.Net/Models/JsonMessagePart.cs index 021358a1..5e74b8f4 100644 --- a/Archipelago.MultiClient.Net/Models/JsonMessagePart.cs +++ b/Archipelago.MultiClient.Net/Models/JsonMessagePart.cs @@ -1,6 +1,5 @@ using Archipelago.MultiClient.Net.Enums; using Newtonsoft.Json; -using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; namespace Archipelago.MultiClient.Net.Models @@ -8,11 +7,11 @@ namespace Archipelago.MultiClient.Net.Models public class JsonMessagePart { [JsonProperty("type")] - [JsonConverter(typeof(StringEnumConverter), typeof(SnakeCaseNamingStrategy))] + [JsonConverter(typeof(AttemptingStringEnumConverter), typeof(SnakeCaseNamingStrategy))] public JsonMessagePartType? Type { get; set; } [JsonProperty("color")] - [JsonConverter(typeof(StringEnumConverter), typeof(SnakeCaseNamingStrategy))] + [JsonConverter(typeof(AttemptingStringEnumConverter), typeof(SnakeCaseNamingStrategy))] public JsonMessagePartColor? Color { get; set; } [JsonProperty("text")]