在调试模式下显示字符串

时间:2015-09-25 00:14:16

标签: c# json string encoding asp.net-web-api

我有一个带有两个字符串属性的对象。为什么在查看调试中对象的值时,撇号会显示为\u0027,但是当您查看属性的值时,它会将其显示为撇号? 见下面的截图: enter image description here

顺便说一下,我通过控制器的动作接收到这个对象,它是否与反序列化对象有关?

编辑: 我刚刚意识到ToString()方法已被覆盖并返回此:

new JavaScriptSerializer().Serialize(this);

那么为什么该方法会将撇号转换为\u0027t

1 个答案:

答案 0 :(得分:1)

因为它是有效的('\u0027是JavaScript / JSON的相同字符的不同表示形式,并且您不能在带引号的字符串中使用引号。即使可以在JSON字符串“'”和“”中使用相反的引号,也可以放弃JSON序列化的两种类型的引号更安全。

请注意,JSON.Net版本更加智能,无法转义所有引号:

Console.WriteLine(new JavaScriptSerializer().Serialize("a'b")); // "a\u0027b"
Console.WriteLine(JsonConvert.SerializeObject("a'b")); // "a'b"