lee576的专栏
登录
注册
全站
当前博客
空间
博客
好友
相册
留言
汪立
ID:lee576
共
181235
次访问,排名
396
好友
69
人,关注者
66
人
不要想给自己找个“老师”,自己就是自己的老师,勤奋与思考,才配做程序员!
lee576的文章
原创 526 篇
翻译 4 篇
转载 327 篇
评论 37 篇
lee576的公告
渴望知识的力量,知识创造财富和价值并赢得时间
最近评论
billschen:
学习了.多谢啦...
oyangxiaoxiao:
这个方法不行的,我试过了。
VincenT08:
实验成功!Thanks!!!
huangjacky:
不错,收藏
soulmelody:
我也是刚接触的
前天用CSS外部样式表控制样式
结果我就从HTML前台代码下手,看了源代码才知道
不过没想到访问是这样的!!不错!!
文章分类
Ajax
(RSS)
Asp.Net
(RSS)
C#
(RSS)
Castle 框架
(RSS)
CodeSmith
(RSS)
CSS
(RSS)
delphi
(RSS)
Erlang
(RSS)
Ext Ajax 框架
(RSS)
GIS
(RSS)
Indy For Delphi
(RSS)
JavaScript
(RSS)
LINQ
(RSS)
Microsoft Office Sharepoint Server
(RSS)
NetAdvantage For Asp.net
(RSS)
NHibernate
(RSS)
Oracle
(RSS)
PSP 平台编程
(RSS)
RadControl For Asp.Net
(RSS)
RemObject For Delphi
(RSS)
Ruby
(RSS)
Silverlight
(RSS)
Sql Server
(RSS)
VS.NET
(RSS)
WAP For Asp.net
(RSS)
WCF
(RSS)
Windows
(RSS)
WPF
(RSS)
工作经验积累
(RSS)
回忆录
(RSS)
经济
(RSS)
其它
(RSS)
设计模式
(RSS)
生活随想
(RSS)
算法
(RSS)
网络协议
(RSS)
我的读书笔记之.net篇
(RSS)
我的读书笔记之JavaScript篇
(RSS)
行业知识
(RSS)
业务知识
(RSS)
移动通信
(RSS)
硬件
(RSS)
中间件
(RSS)
收藏
相册
跳伞
存档
2008年09月(2)
2008年08月(12)
2008年07月(47)
2008年06月(16)
2008年05月(16)
2008年04月(87)
2008年03月(71)
2008年02月(67)
2008年01月(165)
2007年12月(89)
2007年11月(61)
2007年10月(14)
2007年09月(10)
2007年08月(12)
2007年07月(19)
2007年06月(6)
2007年05月(5)
2007年04月(18)
2007年03月(14)
2007年02月(21)
2007年01月(11)
2006年12月(31)
2006年11月(20)
2006年10月(30)
2006年09月(4)
2006年08月(2)
2006年07月(1)
2006年06月(6)
软件项目交易
订阅我的博客
扩展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弹出模式窗口
评论:没有评论。
发表评论
姓 名:
主 页:
校验码:
看不清,换一张
当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击
登录