汪立ID:lee576
181235次访问,排名396好友69人,关注者66
不要想给自己找个“老师”,自己就是自己的老师,勤奋与思考,才配做程序员!
lee576的文章
原创 526 篇
翻译 4 篇
转载 327 篇
评论 37 篇
lee576的公告
渴望知识的力量,知识创造财富和价值并赢得时间
最近评论
billschen:学习了.多谢啦...
oyangxiaoxiao:这个方法不行的,我试过了。
VincenT08:实验成功!Thanks!!!
huangjacky:不错,收藏
soulmelody:我也是刚接触的
前天用CSS外部样式表控制样式
结果我就从HTML前台代码下手,看了源代码才知道
不过没想到访问是这样的!!不错!!
文章分类
收藏
    相册
    跳伞
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 扩展Json.net(Newtonsoft.Json)收藏

    新一篇: What is JSON:在ASP.NET中使用JSON | 旧一篇: JavaScript弹出模式窗口

    最近在项目中尝试Json来用于ajax和asp.net之间传递数据,确实方便不少。但也有一些不方便之处。
    在我的项目中一个类有太多的属性,有的时候我只想将其中一两个系列化成Json字符串传递到客户端来,Newtonsoft.Json为我们提供了 JsonIgnoreAttribute这个Attribute,但是由于属性太多,大部分属性几乎都贴上了标签实在太麻烦。如下的User类,我只想要 Id和RealName,但对其他属性不得不都贴上标签
    public class User
    {
        
    private int _id;
        
    public int Id
        
    {
            
    get return _id; }
            
    set { _id = value; }
        }

        
    private string _userName;
        [JsonIgnore]
        
    public string UserName
        
    {
            
    get return _userName; }
            
    set { _userName = value; }
        }

        
    private string _pho;
        [JsonIgnore]
        
    public string Pho
        
    {
            
    get return _pho; }
            
    set { _pho = value; }
        }

        
    private string _realName;
        
    public string RealName
        
    {
            
    get return _realName; }
            
    set { _realName = value; }
        }

        
    private string _email;
        [JsonIgnore]
        
    public string Email
        
    {
            
    get return _email; }
            
    set { _email = value; }
        }

        
    private string _addr;
        [JsonIgnore]
        
    public string Addr
        
    {
            
    get return _addr; }
            
    set { _addr = value; }
        }

    }
    这样实在不怎么雅观,而且很麻烦。
    幸亏Newtonsoft.Json给我们提供了源代码,这样我们就可以扩展她了。我在Newtonsoft.Json里添加了两个Attribute:JsonCustomSerializationAttribute是用于贴在类上的,JsonDisplayAttribute是用于贴在字段或者属性上的,当该类贴上了JsonCustomSerializationAttribute标签后,系列化的时候就只会将贴上了JsonDisplayAttribute标签的属性或字段给系列化出来,如下:
    [JsonCustomSerialization]
    public class User
    {
        
    private int _id;
        [JsonDisplay]
        
    public int Id
        
    {
            
    get return _id; }
            
    set { _id = value; }
        }

        
    private string _userName;
        
    public string UserName
        
    {
            
    get return _userName; }
            
    set { _userName = value; }
        }

        
    private string _pho;
        
    public string Pho
        
    {
            
    get return _pho; }
            
    set { _pho = value; }
        }

        
    private string _realName;
        [JsonDisplay]
        
    public string RealName
        
    {
            
    get return _realName; }
            
    set { _realName = value; }
        }

        
    private string _email;
        
    public string Email
        
    {
            
    get return _email; }
            
    set { _email = value; }
        }

        
    private string _addr;
        
    public string Addr
        
    {
            
    get return _addr; }
            
    set { _addr = value; }
        }

    }

    这个时候只系列化Id和RealName这两个属性了
    除了添加上面两个attribute外还修改了JsonSerializer.cs代码中的307行的位置加入了如下代码
            if (objectType.IsDefined(typeof(JsonCustomSerializationAttribute), true))
            
    {
                ignored 
    = !member.IsDefined(typeof(JsonDisplayAttribute), true);
            }
    你也可以根据上面的代码编译自己的版本,如果你像我这样比较懒的话也可以从这里下载我编译好了的版本
    /Files/yuyijq/Release.rar

    发表于 @ 2008年04月06日 12:30:00|评论(loading...)|编辑

    新一篇: What is JSON:在ASP.NET中使用JSON | 旧一篇: JavaScript弹出模式窗口

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © lee576