using Newtonsoft.Json; using System.Buffers.Text; namespace YLErp.Converter { public class QuotedByteConverter_Nullable : JsonConverter { 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); } } } }