本帖最后由 yfchenjun 于 2013-04-08 20:15:26 编辑

解决方案 »

  1.   

    Newtonsoft.Json序列化和反序列
      

  2.   

    在一般处理程序里做序列化:        List<Address> ad = new List<Address>();
            foreach (var row in data)
            {
                ad.Add(new Address() { Id = row.Id.ToString(), Duty = row.Duty,Name=row.Name, Addr = row.Addr });
            }
            JavaScriptSerializer jss = new JavaScriptSerializer();
            string json = jss.Serialize(ad);
            context.Response.Write(json);在前台反序列化:(我的是JQuery)var dhl=$.parseJSON(data);
      

  3.   

    多谢大侠的解答 小弟第一次接触JSON 问题太菜了 
    再问一下
    var menulist = { menus:
            [{ menuname: "设备管理" , icon: "icon-blank" , menus:
                [{ menuname: "设备管理", icon: "icon-itemblue", url: "Device/Info/List.aspx" },
                { menuname: "设备控制", icon: "icon-itemblue", url: "Device/Control/List.aspx" }]
            }]
    };里面的menus: 是否是必须的 
    如何生成的时候带着个前缀 我看一般的生成是这样的
    var menulist = {
            [{ menuname: "设备管理" , icon: "icon-blank" , menus:
                [{ menuname: "设备管理", icon: "icon-itemblue", url: "Device/Info/List.aspx" },
                { menuname: "设备控制", icon: "icon-itemblue", url: "Device/Control/List.aspx" }]
            }]
    };
      

  4.   

    关键是看你的类型如何定义,这里可以没有menus这个前缀。
    关于你的这样的格式,定义的类型就是这样的:
    public class Menu
    {
        public string menuname {get;set;}
        public string icon {get;set;}
        public string url {get;set;}
        public List<Menu> menus {get;set;}
    }
    当menuname、icon、url均为null的时候,序列化到Json就是{"menus":[...]}的形式,请注意,这里的双引号必须存在,menus上没有双引号是错误的
      

  5.   

    我这样为什么不行 
    var _menus;
            $.getJSON("/ashx/UserMenu.ashx", function (data) {
                _menus = data.toString();
            });
    ashx里面返回的是 这样 我想赋值给一个变量
    { menus:
            [{ menuname: "设备管理" , icon: "icon-blank" , menus:
                [{ menuname: "设备管理", icon: "icon-itemblue", url: "Device/Info/List.aspx" },
                { menuname: "设备控制", icon: "icon-itemblue", url: "Device/Control/List.aspx" }]
            }]
    };
      

  6.   

    自己拼接碰到特殊字符就会有问题了
    js中判断一下data是否有值,转换成对象_menus = eval(data);