通过JSON和asp.net mvc在字符串中使用双引号
本文关键字:字符串 JSON asp net mvc 通过 | 更新日期: 2023-09-27 18:00:55
通过webform返回json格式的字符串,"
将被正确转义,一切正常,但在mvc中,"
将以'"
格式显示,因此josn格式将损坏
这段代码在mvc中,返回"name'":'"MSLM"
public ActionResult Index()
{
string s = @"name"":""MSLM";
return Json(s, JsonRequestBehavior.AllowGet);
}
该代码在webform中工作正常,并返回"name":"MSLM"
Response.Clear();
Response.Charset = "utf8";
Response.ContentType = "application/json";
string s = @"name"":""MSLM";
Response.Write(s);
Response.End();
通过此代码串行化测试的字符串,但不太适用
JavaScriptSerializer js = new JavaScriptSerializer();
string s = "'"asdfasdf'":'"asdfad'"";
return js.Serialize(s);
您说输出正确的第一个例子是不正确的。
string s = @"name"":""MSLM";
这转换为字符串name":"MSLM
请注意,我没有使用引号来分隔字符串。就像字符串foo
可以键入为"foo"一样,name":"MSLM
可以记为"name":"MSLM"。
然而,你的第二个例子似乎正是你想要的。
string s = "'"asdfasdf'":'"asdfad'"";
这转换为字符串"asdfasdf":"asdfad"
。可以写成"asdfasdf":"asdfad">查看开始和结束处的双引号。外部引号表示字符串s
的终止位置。内部的一组引号用于包裹asdfasdf
值。
第二个例子也可以表述如下:
string s = @"""asdfasdf"":""asdfad""";
这两个片段是等价的。使用@"mystring"
表示法通常用于想要输入多行字符串变量的场景,但也可以在单行上使用(我不明白为什么要使用它,但它是有效的(。
长话短说,示例2是正确的,示例1不是。我怀疑你在测试过程中犯了一个错误,所以造成了混乱。