BTJson JSON 对象个性化序列工具开源项目

我要开发同款
匿名用户2015年05月10日
141阅读

技术信息

开源地址
https://github.com/YahooArchive/grunt-es-dependency-graph
授权协议
BSD

作品详情

(停止维护sice2017年8月)

Beetl-JsoTool作为beetl模板引擎的一个附属工具,提供了对象序列化成jso技术。其原理是基于(Locatio:actio)*,功能强大,扩展性强,比fastjso,jackso,gos基于aotatoi的强大,也远远超过了joddjso,flexjso序列化能力而体积小,仅仅不到70K。它能允许通过序列化策略来个性化的序列化对象到JSON而无需编程或者包装原有对象,而它的性能也是相当优秀。api例子如下

JsoTooltool=ewJsoTool();Strigjso=tool.serialize(user);Strigjso1=tool.serialize(user,"id:i"));//忽略属性Strigjso2=JsoTool.serialize(list,"[1].id:i"));//忽略第二个元素的id属性//所有属性都会执行hierateCheck的回调Strigjso2=JsoTool.serialize(obj,"*:!hiberate"));

 

序列化策略例子:

 

 

ame:i忽略ame属性id:i,obj.id:i忽略属性id,忽略属性obj对象的id的属性.可以将多个序列化策略组合在一起,用逗号分开ame:/myName/将属性ame输出成myName~L/com.test.User/:o/ame,age/User对象实例排序输出,ame,age先输出,其他按照定义输出[1].date:f/yyyy-MM-dd/列表第二项目的date属性格式化输出

 

 

序列化规则

 

序列化规则可以有多个,每个包含一个locatio和actio对,用冒号分开,每个序列化规则用逗号分开,这个类似jso的格式,如ame:i,user.id:i,~L/#ju.Collectio*/:->ull如上表示三个序列化规则, 

 

第一个是忽略属性ame 第二个是忽略user属性的id属性 第三个要复杂一些,意思当序列到Collecto类及其子类时候,直接赋值为ull(#jl是java.util的别名)。

locatio和actio有可能出现//,这类似程序语言的(),里面是参数,如~L/#ju.Collectio*/Actio:定义了一个匹配动作的输出,有忽略属性,包含属性,排序,改名,条件判断,直接赋值,调用回调等

 

Locatio:定义了一个序列化的位置,如属性名,或者属性表达式,列表(数组)元素,类等

 

功能介绍

(停止维护 since 2017年8月) Beetl-JsonTool 作为beetl模板引擎的一个附属工具,提供了对象序列化成json技术。其原理是基于(Location:action)*,功...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论