您的位置: 首页 > 技术文档 > 网络编程 > 轻量级JSON映射类库
选择开发技术四步曲 回到列表 PHP校验ISBN码的函数
 轻量级JSON映射类库

作者:老赵 时间: 2010-10-11 文档类型:转载 来自:老赵点滴


轻量级JSON映射类库 [2]
轻量级JSON映射类库 [3]
轻量级JSON映射类库 [4]

JSON全称为JavaScript Object Notation,原本作为JavaScript语言中用于表示对象结构的文本形式。不过目前JSON成功地脱离了JavaScript语言,它已经成为一种运用十分广泛的数据交换格式。从表面看来,目前用于某个对象与JSON格式之间相互转化的解决方案已经有了许多种,例如在.NET平台上,我们可以使用ASP.NET AJAX中引入的JavaScriptSerializer,WCF中引入的DataContractJsonSerializer,亦或是Json.NET。但是,最近我忽然发现这些类库都无法满足我的要求,因此,我今天花了一点时间,写了一个非常简单的对象与JSON格式相互转化的类库,是为JsonMe

现有解决方案的不足

您可能会感到疑惑,难道现有的解决方案都不够好吗?又搞一个新的实现出来,这不是重复造轮子嘛。但事实上,它们在我眼里,都有一些难以逾越的障碍。就拿JavaScriptSerializer来说,它使用起来十分简单,配合C#的匿名对象特性,输出一个JSON格式可谓无比直接:

var value = new
{
    hello = "world",
    array = new object[] { 1, 2, 3, "jeffz" }
};
var json = new JavaScriptSerializer().Serialize(value);

JavaScriptSerializer也支持JSON格式与某种类型的对象相互转化,甚至可以加上ScriptIgnoreAttribute标记来忽略某个属性,例如:

public class Post
{
    public string Title { get; set; }

    [ScriptIgnore]
    public string Content { get; set; }

    public DateTime CreateTime { get; set; }
}

如果我想要改变某个属性在JSON中的字段名呢?JavaScriptSerializer应该也做得到,但我现在我一时想不起来了,也懒得去查。我知道DataContractJsonSerializer一定支持,事实上它是.NET中用于代替JavaScriptSerializer的JSON序列化解决方案,为此如今的JavaScriptSerializer已经标记了ObsolateAttribute,编译时您应该可以看到warning。

那么我再提一个要求:在序列化某个字段的时候,对它的值进行一个简单的转化。例如,我希望将DateTime对象在JSON中表现为字符串,这对于JavaScriptSerializer和DataContractJsonSerializer来说似乎就做不到了,至少会十分麻烦。但是这对于Json.NET来说不是个问题,相比于前两者来说,Json.NET可谓是JSON解决方案中的Word和Excel,经过了许多版本的积极开发,如今的Json.NET已经实现了大量的功能,几乎在每一处都提供了扩展点。我对Json.NET的了解不多,不过在简单浏览代码以后,我发现它的复杂度已经能和如今的ASP.NET MVC比肩了,是不是显得有些可怕?我也这么觉得。

但事实上,让我重新写一个JsonMe的关键,是因为我希望同一种类型能够与不同的JSON格式相互转化。试想,我有一个User类型,但是我却有两个不同格式的JSON数据源。或者说,相同的User对象,需要根据环境得到两种不同格式的JSON输出。这样JavaScriptSerializer或DataContractJsonSerializer就无法满足我的要求了,因为它们使用自定义特性来控制JSON的格式,但一个类型只能应用一种JSON策略,这又让我如何是好?

出处:老赵点滴
责任编辑:bluehearts

上一页 下一页 轻量级JSON映射类库 [2]

◎进入论坛网络编程版块参加讨论

作者文章
异步编程与响应式框架
使用OpenOffice.org将各类文档转为PDF
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
经典设计案例:丢猫千万别找设计师
UI AWARD 2010提名奖名单揭晓
网站设计解构
赢在设计
WAP2.0网页设计中的交互细节
画在信封上
数据同步算法研究
Flash ActionScript 3.0溢彩编程
用ps作简单的作品展示页面
CSS定位机制之一:普通流
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:1/41个记录/页 转到 页 共4个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《CSS那些事儿》
闪魂-FlashCS4完美入门与案例精粹
Waver_h's华丽世界
Illustrator CS3质感绘画表现技法
《网页设计全书》
《用户体验要素》
《JavaScript语言精粹》
作品集 更多内容