Cod*_*ler 5 c# serialization json html-encode json.net
我正在使用 Json.net 反序列化 Web API 调用接收到的 json 数据。某些字段通常具有 html 编码的字符,例如"或&如何在反序列化期间自动解码此字符?
我得出了两种可能的解决方案:
调用System.Web.HttpUtility.HtmlDecode()属性设置器,如:
public string Title
{
set
{
title = System.Web.HttpUtility.HtmlDecode(value);
}
}
Run Code Online (Sandbox Code Playgroud)编写自定义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 解码而无需额外代码?
System.Net.WebUtility.HtmlDecode()
Run Code Online (Sandbox Code Playgroud)
或者
HttpUtility.HtmlDecode()
Run Code Online (Sandbox Code Playgroud)
是要走的路,关于 JsonSerializer 没有内置任何内容。