50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
|
|
|
|
using Newtonsoft.Json;
|
|
using System.Buffers.Text;
|
|
|
|
namespace YLErp.Converter
|
|
{
|
|
public class QuotedByteConverter_Nullable : JsonConverter<byte?>
|
|
{
|
|
public override byte? ReadJson(JsonReader reader, Type objectType, byte? existingValue, bool hasExistingValue, JsonSerializer serializer)
|
|
{
|
|
if (reader.TokenType == JsonToken.String)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(reader.ReadAsString()))
|
|
{
|
|
if (Nullable.GetUnderlyingType(objectType) != null)
|
|
{
|
|
return null;
|
|
}
|
|
return default(byte);
|
|
}
|
|
|
|
if (Byte.TryParse(reader.ReadAsString(), out byte number))
|
|
return number;
|
|
}
|
|
var result = reader.ReadAsBytes();
|
|
if (result != null)
|
|
{
|
|
return result.First();
|
|
}
|
|
else
|
|
{
|
|
return default(byte);
|
|
}
|
|
}
|
|
|
|
public override void WriteJson(JsonWriter writer, byte? value, JsonSerializer serializer)
|
|
{
|
|
if (!value.HasValue)
|
|
{
|
|
writer.WriteNull();
|
|
}
|
|
else
|
|
{
|
|
writer.WriteValueAsync(value);
|
|
}
|
|
}
|
|
}
|
|
}
|