在 Json 反序列化期间解码 Html 编码的字符
Decode Html-encoded characters during Json deserialization
我正在使用 Json.net 反序列化 Web API 调用接收到的 json 数据。有些字段通常有 html 编码的字符,例如 "
或 &
如何在反序列化过程中自动解码这些字符?
我得出了 2 种可能的解决方案:
在 属性 setter 中调用 System.Web.HttpUtility.HtmlDecode()
例如:
public string Title
{
set
{
title = System.Web.HttpUtility.HtmlDecode(value);
}
}
编写在 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 的内置内容。
我正在使用 Json.net 反序列化 Web API 调用接收到的 json 数据。有些字段通常有 html 编码的字符,例如 "
或 &
如何在反序列化过程中自动解码这些字符?
我得出了 2 种可能的解决方案:
在 属性 setter 中调用
System.Web.HttpUtility.HtmlDecode()
例如:public string Title { set { title = System.Web.HttpUtility.HtmlDecode(value); } }
编写在
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 的内置内容。