Files
zszq-trs/Framework/SharedWebApi/Converters/QuotedByteConverter_Nullable.cs
T
2024-05-09 14:06:26 +08:00

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);
}
}
}
}