zoukankan      html  css  js  c++  java
  • ASP.NET MVC 中使用Json的一点小疑问(已解决)

    大多数情况下我们返回到客户端的Json有两种方式:

    1、直接传对象给Json()去转成Json

    代码
    public ActionResult JsonTest()
    {

            List
    <Result> list = new List<Result>();
            list.Add(
    new Result { State = 2});
            list.Add(
    new Result { State = 5 });

    return Json(list,JsonRequestBehavior.AllowGet);
    }


    public ActionResult JsonTest()
            {

                List
    <Result> list = new List<Result>();
                list.Add(
    new Result { State = 2});
                list.Add(
    new Result { State = 5 });

                
    return Json(list,JsonRequestBehavior.AllowGet);
            }
    2、手写拼凑
    public JsonResult JsonTest2()
            {
                
    string s=@"[{'State':2},{'State':5}]";

                
    return Json(s, JsonRequestBehavior.AllowGet);
            }

    前端都用同样的方法:

                $(function() {              
                    $.ajax({
                        type: 
    "Get",
                        url: 
    "Home/JsonTest",
                        data: { t: 
    new Date() },
                        dataType: 
    "json",
                        success: 
    function(data) {
                            alert(data);                       
                        }
                    });
                    $.ajax({
                        type: 
    "Get",
                        url: 
    "Home/JsonTest2",
                        data: { t: 
    new Date() },
                        dataType: 
    "json",
                        success: 
    function(data) {
                            alert(data);                       
                        }
                    });
                });

    这时候得到的结果:

    JsonTest : [object Object],[object Object] //已经被转成的Json数组

    JsonTest2: [{'State'2},{'State':5}] //还是字符串

    第二种情况解决办法到很简单:

    alert(eval('(' + data + ')'));

     运行字符串就可以得到Json数组.

    打开reflector查看到JsonResult :

    JavaScriptSerializer serializer = new JavaScriptSerializer();
    response.Write(serializer.Serialize(
    this.Data));

     事实上序列化之后都是string,不知道为什么会这样,不解!! 那位高人指点一二!

    解决办法:

    原因被重复的Serialize,所以不能用Json()去返回,改用Context就Ok了。

     public ActionResult JsonTest2()
            {
                
    string s=@"[{""State"":2},{""State"":5}]";

                
    return Content(s);
            }



    --------------------------------------------------------------------------
    Daniel Chow's Blog - 不管你在哪里,都要有一颗创业的心!
    http://www.cnblogs.com/DanielChow/
  • 相关阅读:
    十条jQuery代码片段助力Web开发效率提升
    C#如何释放已经加载的图片 (转)
    获取文件夹下最新文件 (转)
    时间格式转换
    调整ListBox控件的行间距及设置文本格式
    c++builder调用vc的dll
    mws文件中的tab文件改为相对路径
    .net 对配置文件内容的操作
    winform下mapxtreme2008 v7.0 生成release版提示找不到dll问题
    vue实现按字母A-Z选择城市
  • 原文地址:https://www.cnblogs.com/DanielChow/p/1726398.html
Copyright © 2011-2022 走看看