vs2012 编译
public JsonResult GetJson()
{
string result = "{\"Age\":22,\"Name\":\"lin\"}";
return Json(result, JsonRequestBehavior.AllowGet);
}
得到:{\"Age\":22,\"Name\":\"lin\"}
问题是浏览器请求到竟然是带反斜杠的字符串,导致json解析错误。
正确应该是没\的json字符串,如何解决,难道是vs2012问题???
public class Person { public string Name { get; set; } public int Age { get; set; } } public JsonResult GetJson() { Person person = new Person(); person.Name = "lin"; person.Age = 11; return Json(person, JsonRequestBehavior.AllowGet); }
你要理解,这个是将Object转换为Json用的。
你的代码中,result本来就是一个Json,调用Json方法,会将result里面的引号和反斜杠作为一个整体转义
换句话说,你的result="{\\\"Age\\\":22,\\\"Name\\\":\\\"lin\\\"}"
说得比较混乱,希望你能理解
大概意思理解,之前是习惯了vs2010.还以为是vs2012编译问题....
你返回的结果是string类型的,把\去掉
public string GetJson() { string result = "{\"Age\":22,\"Name\":\"lin\"}"; return result; } 或者 public JsonResult GetJson() { var result = new { Age = 22, Name = "lin" }; return Json(result, JsonRequestBehavior.AllowGet); }
嗯。。。调用Json方法会内部再转换,明白。
return Json(new {Age=22,Name="lin"}, JsonRequestBehavior.AllowGet);
不要专门去建立一个类了
赞同这个写法,匿名类型还是很好用的
客户端解码json用错了方式,需要这样去解析eval("("+"{\"Age\":22,\"Name\":\"lin\"}"+")");///eval("("+data+")")