JSON 对象个性化序列工具 BTJson

BSD
Java
跨平台
2015-05-10
闲大赋

(停止维护 since 2017年8月)

Beetl-JsonTool 作为beetl模板引擎的一个附属工具,提供了对象序列化成json技术。其原理是基于(Location:action)*,功能强大,扩展性强,比fastjson,jackson,gosn基于annotatoin的强大,也远远超过了jodd json,flexjson序列化能力 而体积小,仅仅不到70K。它能允许通过序列化策略来个性化的序列化对象到JSON而无需编程或者包装原有对象,而它的性能也是相当优秀。

api 例子如下

JsonTool tool = new JsonTool();
String json = tool.serialize(user);         
String json1 = tool.serialize(user,"id:i"));      //忽略属性       
String json2 = JsonTool.serialize(list,"[1].id:i")); //忽略第二个元素的id属性
//所有属性都会执行hinernateCheck的回调
String json2 = JsonTool.serialize(obj,"*:!hibernate"));

 

序列化策略例子:

 

 

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

 

 

序列化规则

 

序列化规则可以有多个,每个包含一个location和action对,用冒号分开,每个序列化规则用逗号分开,这个类似json的格式,如 name:i,user.id:i,~L/#ju.Collection*/:->null 如上表示三个序列化规则, 

 

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


location和action有可能出现//,这类似程序语言的(),里面是参数,如~L/#ju.Collection*/


Action:定义了一个匹配动作的输出,有忽略属性,包含属性,排序,改名,条件判断,直接赋值,调用回调等

 

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

 

加载中

评论(3)

xingmu
xingmu
是否还更新呢。
czltx224
czltx224
马克
MartinBockZhu
MartinBockZhu
mark #BTJson#

BTJson 0.93 发布,JSON 个性化序列工具

BTJson 0.93 发布,更新内容如下: 1 增加 *./正则表达式/ 用来匹配属性,如*./id/:i 。所有id属性都忽略 2 属性里允许使用正则表达式,如obj./.*str/ 表示属性objt下的所有以str结尾的属性 ...

2015/07/20 13:04

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

Beetl-JSON 0.91 发布了,新增 #1 JsonTool 可以多个实例 #2 增加了location 语法 "*",用来定位所有属性,如":!hibernateLazyCheck" #3 增加了别名 #符号,如 ~L/#ju.List/ 指的是所有java.ut...

2015/06/09 09:06

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

Beetl-Json 提供了Java对象序列化成json技术。其原理是基于(Location:action)*,功能强大,扩展性强,而体积小,仅仅不到70K。它能允许通过序列化策略(也支持传统的Annotation)来个性化的序列...

2015/05/28 22:56

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

beetl里使用json

Beetl 语法类似JS,既然JS支持json,那Beetl也得支持json,如下: <% var a = [1,2,3]; var b = {'key',a,'key2',123,key3:456}; var c = b['key'] ; //or b.key %> ${a[0]...

2013/08/27 20:21
561
0
09.ajax局部渲染---《Beetl视频课程》

本期视频实现分类实时获取; 内容简介:使用了局部渲染技术,实现分类的实时获取 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK Beetl满足了更...

12/12 17:46
8
0
Location:Action,新的JSON序列化的思路

序列化Json,是当前火爆的互联网世界的一种最基础的技术之一,最常用的是采用Annotation&SerializerFeature 方式,国内流行的fastjson,还有国外流行的jackson都是这样。然而,这种方法有一定...

2015/05/10 23:35
7.1K
18
Jodd-madvoc 与 beetl集成

Jodd-madvoc 是一个功能齐全的web mvc框架,默认使用jsp作为视图技术,也可以通过本文的方法,采用beetl作为视图技术

2013/12/07 22:22
426
0
07.HTML标签以及自定义定界符配置---《Beetl视频课程》

本期视频实现了评论列表分页; 内容简介:使用了HTML完成分页抽取,并且介绍了自定义定界符 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK HT...

12/12 09:49
4
0
还在用AJAX+Json,改用AJAX+Beetl吧

模板引擎新功能,完美结合ajax

2015/03/10 20:47
2.7K
0
04.Beetl常用内置函数以及安全输出---《Beetl视频课程》

本期视频实现了三个功能,模糊搜索、标签分类、登录/注销功能; 内容简介:使用了常用内置函数,以及安全输出,实现了上面提到的三个业务 一起学beetl目录:https://my.oschina.net/u/159049...

11/24 00:34
56
1
Spark Framework简单示例

Spark Framework beetl fastjson 结合,实现WebSocket以及常用的mvc功能。

2016/06/02 16:21
140
0
06.Beetl标签函数include ---《Beetl视频课程》

本期视频实现了评论列表分页; 内容简介:使用了标签函数include完成分页抽取 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 标签函数 includ...

12/11 14:40
11
0
扩展Beetl标签,支持父子嵌套和脚本绑定

工程例子在 https://git.oschina.net/xiandafu/beetl-json 安装 TAG.htmltag= com.beetl.tagext.HTMLTag TAG.htmltagvar= com.beetl.tagext.HTMLVarBindingTag 例子 <!DOCTYPE html> <ht...

2015/05/12 08:34
113
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部