在 Json 反序列化期间解码 Html 编码的字符

Decode Html-encoded characters during Json deserialization

我正在使用 Json.net 反序列化 Web API 调用接收到的 json 数据。有些字段通常有 html 编码的字符,例如 "& 如何在反序列化过程中自动解码这些字符?

我得出了 2 种可能的解决方案:

  1. 在 属性 setter 中调用 System.Web.HttpUtility.HtmlDecode() 例如:

    public string Title
    {
        set
        {
            title = System.Web.HttpUtility.HtmlDecode(value);
        }
    }
    
  2. 编写在 ReadJson() 方法中调用 System.Web.HttpUtility.HtmlDecode() 的自定义 JsonConverter:

    public class HtmlEncodingConverter : Newtonsoft.Json.JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return objectType == typeof(String);
        }
    
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            return System.Web.HttpUtility.HtmlDecode((string)reader.Value);
        }
    
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            writer.WriteRawValue(System.Web.HttpUtility.HtmlEncode((string)value));
        }
    }
    

但是是否有任何内置解决方案允许在 json 反序列化期间执行 html 解码而无需额外代码?

System.Net.WebUtility.HtmlDecode()

HttpUtility.HtmlDecode()

是要走的路,没有关于 JsonSerializer 的内置内容。