1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Beetl-JSON 0.9 发布,JSON 个性化序列工具 下载

本帖由 漂亮的石头2015-05-29 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

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

    代码例子


    [COLOR=rgba(0, 0, 0, 0.8)] [/COLOR]

    //全局设定,对于所有对象都适用
    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,"~*:eek:/age,name/"));
    // 同上策略,但name属性输出改为code
    String json2 = JsonTool.serialize(User,"~*:eek:/age,name/,name:nn/code/"));
    // 同上策略,像api传递俩个策略
    String json2 = JsonTool.serialize(User,"~*:eek:/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
    Beetl-JSON 0.9 发布,JSON 个性化序列工具下载地址
     
正在加载...