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



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

我想到了 2 个可能的解决方案:

  1. 在属性设置器中调用System.Web.HttpUtility.HtmlDecode(),如下所示:

    public string Title
    {
        set
        {
            title = System.Web.HttpUtility.HtmlDecode(value);
        }
    }
    
  2. 编写在方法中调用System.Web.HttpUtility.HtmlDecode() ReadJson()的自定义 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 的内容。

相关内容

  • 没有找到相关文章

最新更新