反序列化enum

   [JsonConverter(typeof(EnumJsonConverter<DocumentStatus>))]
   public enum DocumentStatus
   {
       None = 0,
       Rejected = 1,
       Approved = 2,
       Published = 3,
   }

    public class EnumJsonConverter<T> : JsonConverter<T> where T : struct, Enum
    {
        public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            string value = reader.GetString();
            if (Enum.TryParse(value, out T result))
            {
                return result;
            }
            throw new ArgumentException($"Invalid {typeof(T).Name} value");
        }

        public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
        {
            writer.WriteStringValue(value.ToString());
        }
    }
posted @   Josen_Earth  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示