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

Cod*_*ler 5 c# serialization json html-encode json.net

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

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

  1. 调用System.Web.HttpUtility.HtmlDecode()属性设置器,如:

    public string Title
    {
        set
        {
            title = System.Web.HttpUtility.HtmlDecode(value);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编写自定义JsonConverter的呼叫System.Web.HttpUtility.HtmlDecode()ReadJson()方法:

    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));
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

Emm*_*ace 5

System.Net.WebUtility.HtmlDecode()
Run Code Online (Sandbox Code Playgroud)

或者

HttpUtility.HtmlDecode()
Run Code Online (Sandbox Code Playgroud)

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