我正在使用 Json.net 来反序列化Web API调用接收的json数据。某些字段通常具有 html 编码的字符,如 "
或 &
如何在反序列化期间自动解码此字符?
我想到了 2 个可能的解决方案:
-
在属性设置器中调用
System.Web.HttpUtility.HtmlDecode()
,如下所示:public string Title { set { title = System.Web.HttpUtility.HtmlDecode(value); } }
-
编写在方法中调用
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 的内容。