0

我需要使用 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"

4

1 回答 1

2

它们是相同的,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

于 2013-05-08T15:59:36.620 回答