Browse Source

Added serialization support for Utf8String

voice-allocs
RogueException 7 years ago
parent
commit
a3e404d8f4
2 changed files with 23 additions and 0 deletions
  1. +21
    -0
      src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs
  2. +2
    -0
      src/Discord.Net.Serialization/Json/JsonFormat.cs

+ 21
- 0
src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs View File

@@ -1,4 +1,5 @@
using System.Text.Json;
using System.Text.Utf8;

namespace Discord.Serialization.Json.Converters
{
@@ -39,4 +40,24 @@ namespace Discord.Serialization.Json.Converters
writer.WriteValue(value);
}
}

internal class Utf8StringPropertyConverter : IJsonPropertyConverter<Utf8String>
{
public Utf8String Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
if (reader.ValueType != JsonValueType.String)
throw new SerializationException("Bad input, expected String");
return new Utf8String(reader.Value);
}
public void Write(PropertyMap map, ref JsonWriter writer, Utf8String value, bool isTopLevel)
{
//TODO: Serialization causes allocs, fix
if (isTopLevel)
writer.WriteAttribute(map.Utf16Key, value.ToString());
else
writer.WriteValue(value.ToString());
}
}
}

+ 2
- 0
src/Discord.Net.Serialization/Json/JsonFormat.cs View File

@@ -5,6 +5,7 @@ using System.Reflection;
using System.Text;
using System.Text.Formatting;
using System.Text.Json;
using System.Text.Utf8;

namespace Discord.Serialization.Json
{
@@ -28,6 +29,7 @@ namespace Discord.Serialization.Json
//AddConverter<char, Converters.CharPropertyConverter>(); //char.Parse does not support Json.Net's serialization
AddConverter<string, Converters.StringPropertyConverter>();
AddConverter<Utf8String, Converters.Utf8StringPropertyConverter>();

AddConverter<DateTime, Converters.DateTimePropertyConverter>();
AddConverter<DateTimeOffset, Converters.DateTimeOffsetPropertyConverter>();


Loading…
Cancel
Save