繁体   English   中英

JSON序列化的单反斜杠

[英]Single backslash in JSON serialized

我需要使用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";我会收到错误“无法识别的转义序列@"America/New_York"; 我会得到"timezone":"America/New_York"

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

有关使用@ for string literals的更多信息: http//msdn.microsoft.com/en-us/library/aa691090( v = vs.71).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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