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

标签 c# json serialization json.net html-encode

我正在使用 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 的内置内容。

关于c# - 在 Json 反序列化期间解码 Html 编码的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973032/

相关文章:

c# - 具有整数值的 IFormatProvider

c# - 如何使用 System.Text.Json API 将流反序列化为对象

asp.net - 从 ApiController 中的 json 序列化中排除属性

java - 为什么序列化需要在实现的类中提供序列版本 UID?

c# - 开始使用 C# 进行 TDD 编程的最佳步骤是什么?

c# - .NET 病毒扫描 API

javascript - 如何映射这个json?

c++ - 找不到 compile_commands.json

android - 谷歌gson在android上运行吗?

c# - 我可以在运行时向对象属性添加属性吗?