首页新闻找找看学习计划

asp.net mvc3 return json?

0
悬赏园豆:200 [已解决问题] 解决于 2013-01-15 10:50

vs2012 编译

        public JsonResult GetJson()
        {
            string result = "{\"Age\":22,\"Name\":\"lin\"}";

            return Json(result, JsonRequestBehavior.AllowGet);
        }

得到:{\"Age\":22,\"Name\":\"lin\"}

问题是浏览器请求到竟然是带反斜杠的字符串,导致json解析错误。

 

正确应该是没\的json字符串,如何解决,难道是vs2012问题???

Mr.Lin_♪的主页 Mr.Lin_♪ | 初学一级 | 园豆:3
提问于:2013-01-14 19:54
< >
分享
最佳答案
0
        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\\\"}"

说得比较混乱,希望你能理解

收获园豆:100
CrazyJinn | 小虾三级 |园豆:799 | 2013-01-14 20:39

大概意思理解,之前是习惯了vs2010.还以为是vs2012编译问题....

Mr.Lin_♪ | 园豆:3 (初学一级) | 2013-01-15 10:51
其他回答(4)
1

你返回的结果是string类型的,把\去掉

伏草惟存 | 园豆:1420 (小虾三级) | 2013-01-14 20:15
0
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);
        }
收获园豆:100
Qlin | 园豆:2403 (老鸟四级) | 2013-01-15 08:50

嗯。。。调用Json方法会内部再转换,明白。

支持(0) 反对(0) Mr.Lin_♪ | 园豆:3 (初学一级) | 2013-01-15 10:49
0

return Json(new {Age=22,Name="lin"}, JsonRequestBehavior.AllowGet);
不要专门去建立一个类了

CyBaSter | 园豆:173 (初学一级) | 2013-01-15 09:05

赞同这个写法,匿名类型还是很好用的

支持(0) 反对(0) dong.net | 园豆:205 (菜鸟二级) | 2013-01-15 10:21
0

客户端解码json用错了方式,需要这样去解析eval("("+"{\"Age\":22,\"Name\":\"lin\"}"+")");///eval("("+data+")")

az235 | 园豆:8283 (大侠五级) | 2013-01-15 09:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册