我需要使用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"
答案 0 :(得分: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