Beetl-JSON 0.9 发布,JSON 个性化序列工具 - 开源中国社区
Beetl-JSON 0.9 发布,JSON 个性化序列工具
闲大赋 2015年05月28日

Beetl-JSON 0.9 发布,JSON 个性化序列工具

闲大赋 闲大赋 发布于2015年05月28日 收藏 21 评论 12

有免费的MySQL,为什么还要买? >>>  

Beetl-Json  提供了Java对象序列化成json技术。其原理是基于(Location:action)*,功能强大,扩展性强,而体积小,仅仅不到70K。它能允许通过序列化策略(也支持传统的Annotation)来个性化的序列化对象到JSON而无需编程或者包装原有对象,让天下没有难以序列化的对象 :).而它的性能也是相当优秀.

代码例子

    //全局设定,对于所有对象都适用    
    JsonTool.addLocationAction("~d","f/yyyy.MM.dd/");   
    JsonTool.addLocationAction("~L/java.util.Calendar*/","$.getTime->f/yyyy-MM-dd/");
    //类json格式的策略,用逗号分开多个locationAction
    JsonTool.addPolicy("~f:n/#.##/,~c:?null->[]");
    // 默认是紧凑输出,使用true,将换行和缩进  
    JsonTool.pretty = true;
    JsonTool.addAlias("loc", "org.beetl.json.test.location");
    //序列化User
    String json = JsonTool.serialize(User);
    //or  指定一个序列化策略,age,name先输出,适合有特殊需求的对象或者无法注解(第三方)对象
    String json2 = JsonTool.serialize(User,"~*:o/age,name/"));
    // 同上策略,但name属性输出改为code
    String json2 = JsonTool.serialize(User,"~*:o/age,name/,name:nn/code/"));
    // 同上策略,像api传递俩个策略
    String json2 = JsonTool.serialize(User,"~*:o/age,name/","name:nn/code/"));
    //序列化list,里面所有元素的tt属性之后的User类,只输出id,code
    String json1 = JsonTool.serialize(list, "[*].tt.~L/#ct.User/:i/id,code/");

性能

简单对象序 化预热10万次,序列化1千万次)

beetl-json=3683 jackson=4513 gson=9354

列表序列化 (预热1万次,序列化1百万次)

beetl-json=3667 jackson=2922 gson=9581

忽略某属性(预热10万次,序列化1千万次)

beetl-json=2040 jackson=2371 gson=6938

测试有很多属性的对象(30个属性) (预热1万次,序列化1百万次)

beetl-json=2559 jackson=2998 gson=7359

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Beetl-JSON 0.9 发布,JSON 个性化序列工具
分享
评论(12)
最新评论
0

引用来自“专治各种BUG”的评论

麻烦死了~~~!

引用来自“闲.大赋”的评论

annotation也支持,默认不需要这么麻烦,除非你真碰到了“列表第二个对象的id属性不需要序列化”这种,否则,这些序列化规则你也用不上

引用来自“专治各种BUG”的评论

对象关联早就抛弃了额。。。

引用来自“闲.大赋”的评论

你是怎么做到抛弃对象关联的?新建了个wrapper对象吗?这个时候你应该考虑用beetl-json了。
MAP就可以啦!
0
MAP就可以啦!
0

引用来自“专治各种BUG”的评论

麻烦死了~~~!

引用来自“闲.大赋”的评论

annotation也支持,默认不需要这么麻烦,除非你真碰到了“列表第二个对象的id属性不需要序列化”这种,否则,这些序列化规则你也用不上

引用来自“专治各种BUG”的评论

对象关联早就抛弃了额。。。
你是怎么做到抛弃对象关联的?新建了个wrapper对象吗?这个时候你应该考虑用beetl-json了。
0

引用来自“专治各种BUG”的评论

麻烦死了~~~!

引用来自“闲.大赋”的评论

annotation也支持,默认不需要这么麻烦,除非你真碰到了“列表第二个对象的id属性不需要序列化”这种,否则,这些序列化规则你也用不上
对象关联早就抛弃了额。。。
0

引用来自“LarryKoo”的评论

为什么不拿fastjson比一下,现在用fastjson的比较多吧
有比较,看官网。也希望有第三方来做比较。自卖自夸你也不信啊 :)
0

引用来自“专治各种BUG”的评论

麻烦死了~~~!
annotation也支持,默认不需要这么麻烦,除非你真碰到了“列表第二个对象的id属性不需要序列化”这种,否则,这些序列化规则你也用不上
0
麻烦死了~~~!
0
还有感觉策略规则蛮复杂的,门槛比较高
0
为什么不拿fastjson比一下,现在用fastjson的比较多吧
0
代码开起来不太直观啊
0
我试用了一下,功能强大,强烈推荐。
作者也很耐心的修改bug和听我们的建议,等待反序列化功能编写完毕,正式版后,我们项目就改用beetl json工具。
期待中。
0
这可能是一个好的工具,但不是一个开发的平台
顶部