From b0147a912682c7f40eb2956edbd6ef3b33e0e0e3 Mon Sep 17 00:00:00 2001 From: RogueException Date: Mon, 7 Aug 2017 01:41:53 -0300 Subject: [PATCH] Added Guid serialization support --- .../{Primitives.Bool.cs => Primitives.Other.cs} | 17 ++++++++++++++++- src/Discord.Net.Serialization/Json/JsonFormat.cs | 5 +++-- 2 files changed, 19 insertions(+), 3 deletions(-) rename src/Discord.Net.Serialization/Json/Converters/{Primitives.Bool.cs => Primitives.Other.cs} (53%) diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.Bool.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs similarity index 53% rename from src/Discord.Net.Serialization/Json/Converters/Primitives.Bool.cs rename to src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs index d8daad23b..f64e079ce 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.Bool.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs @@ -1,4 +1,5 @@ -using System.Text.Json; +using System; +using System.Text.Json; namespace Discord.Serialization.Json.Converters { @@ -18,4 +19,18 @@ namespace Discord.Serialization.Json.Converters public void Write(JsonWriter writer, bool value) => writer.WriteValue(value); } + + internal class GuidPropertyConverter : IJsonPropertyConverter + { + public Guid Read(JsonReader reader, bool read = true) + { + if (read) + reader.Read(); + if (reader.ValueType != JsonValueType.String) + throw new SerializationException("Bad input, expected String"); + return Guid.Parse(reader.ParseString()); + } + public void Write(JsonWriter writer, Guid value) + => writer.WriteValue(value); + } } diff --git a/src/Discord.Net.Serialization/Json/JsonFormat.cs b/src/Discord.Net.Serialization/Json/JsonFormat.cs index 4681041a3..4d406ba78 100644 --- a/src/Discord.Net.Serialization/Json/JsonFormat.cs +++ b/src/Discord.Net.Serialization/Json/JsonFormat.cs @@ -11,8 +11,6 @@ namespace Discord.Serialization.Json { public JsonFormat() { - AddConverter(); - AddConverter(); AddConverter(); AddConverter(); @@ -33,6 +31,9 @@ namespace Discord.Serialization.Json AddConverter(); AddConverter(); + AddConverter(); + AddConverter(); + AddGenericConverter(typeof(List<>), typeof(Converters.ListPropertyConverter<>)); AddGenericConverter(typeof(Nullable<>), typeof(Converters.NullablePropertyConverter<>));