简体   繁体   中英

Decode Html-encoded characters during Json deserialization

I'm using Json.net to deserialize json data received by Web API call. Some fields often have html-encoded characters like " or & How can I have this characters automatically decoded during deserialization?

I came to 2 possible solutions:

  1. Calling System.Web.HttpUtility.HtmlDecode() in property setter like:

     public string Title { set { title = System.Web.HttpUtility.HtmlDecode(value); } } 
  2. Writing custom JsonConverter that calls System.Web.HttpUtility.HtmlDecode() in ReadJson() method:

     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)); } } 

But is there any built-in solution that allows to perform html-decoding during json deserialization without additional code?

System.Net.WebUtility.HtmlDecode()

or

HttpUtility.HtmlDecode()

is the way to go, nothing built in regarding the JsonSerializer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM