JSON序列化中的单个反斜杠

本文关键字:单个反 序列化 JSON | 更新日期: 2023-09-27 18:12:34

我需要使用MVC Json序列化格式发送字符串

"America'/New_York"
但是当我创建字符串 时
string timezone = @"America'/New_York";
return JSON(new { timezone = timezone })

在结果我得到:

{ "timezone":"America''/New_York" }

我该怎么做?

编辑。如果我写@"America'/New_York";我将得到错误"无法识别的转义序列"如果我写@"America/New_York";,我会得到"timezone":"America/New_York"

JSON序列化中的单个反斜杠

它们是相同的,JSON序列化器只是添加了一个转义字符。如果要将其反序列化为对象,则将其称为obj,然后执行;

   Console.WriteLine(obj.timezone);
   //outputs "America'/New_York"

无论你用什么方式在视图中显示,都是一样的。

在c#中,字符串字面值前面的@是不使用转义字符的预编译指令。如果您删除@,那么您还必须编写"America''/New_York"以产生输出"America'/New_York"

进一步说明;

 string a = @"America'/New_York";
 string b = "America''/New_York";
 a == b //true
 string c = "America'/New_York"; //compiler error because '/ 
 // is not a recognized escape sequence

有效转义序列列表(如制表符和新行):http://msdn.microsoft.com/en-us/library/h21280bw.aspx

关于使用@作为字符串字面值的更多信息:http://msdn.microsoft.com/en-us/library/aa691090 (v = vs.71) . aspx