最近将项目中的的序列化组件由JavaScriptSerializer换成json.net的时候,发现一个奇怪的问题,它们对html字符串的序列化结果存在差异,请看下面代码。
看起来JavaScriptSerializer序列化的时候,对html标签进行了转义,而json.net序列化的时候没有做任何处理原封不动地输出。
请问,如何让json.net在序列化html字符的时候结果跟JavaScriptSerializer一样呢?希望高手能够给出解答,谢谢!
使用 StringEscapeHandling.EscapeHtml 设置,示例代码如下:
public class Program { public static void Main(string[] args) { var model = new { Title = "博客园", Body = "<p>程序员的网上家园</p>" }; var settings = new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeHtml }; var json = JsonConvert.SerializeObject(model, settings); Console.OutputEncoding = System.Text.Encoding.UTF8; Console.WriteLine(json); Console.ReadKey(); } }
谢谢dudu,问题已经解决了。