同步操作将从 闲.大赋(李家智)/beetl-json 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Beetl-JsonTool 作为beetl模板引擎的一个附属工具,提供了对象序列化成json技术。其原理是基于(Location:action)*,功能强大,扩展性强,而体积小,仅仅不到60K。
##例子:
name:i 忽略name属性
id:i,obj.id:i 忽略属性id,忽略属性obj对象的id的属性.可以将多个序列化策略组合在一起,用逗号分开
d:f/yyyy-MM-dd/ 这个对象实例的日期类型格式化输出,符号代表这个实例
~c:?emtpy->[],这个实例集合为null或者为空都输出[],->后可以是任何常量
name:nn/myName/ 将属性name输出成myName
~*:o/name, age/ 这个对象实例排序输出,name,age 先输出,其他按照定义输出
[1].date:f/yyyy-MM-dd/ 列表第二项目的date属性格式化输出
api 例子如下
String json = JsonTool.serialize(user);
//排序
String json1 = JsonTool.serialize(user,"~*:o/age,name/"));
//忽略第二个元素
String json2 = JsonTool.serialize(list,"[1]:i"));
##Location 定义了一个序列化的位置,比如最简单的location就是属性名称,或者是属性类型,如
locaton 可以是属性表达式
注意,不支持[1][2]这种连续方式
##Action 定义了一个匹配动作的输出,有以下几种
##API例子:
//全局设定,对于所有对象都适用
JsonTool.addLocationAction("~d","f/yyyy.MM.dd/");
JsonTool.addLocationAction("~L/java.util.Calendar*/","$.getTime->f/yyyy-MM-dd/");
//类json格式的策略,用逗号分开多个locationAction
JsonTool.addPolicy("~f:f/#.##/,~c:?null->[]");
// 默认是紧凑输出,使用true,将换行和缩进
JsonTool.pretty = true;
//序列化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/"));
//序列化dept,Department跟SysUser是一对多关系,如果俩个类都重复引用,则忽略导致重复引用的dept字段和users字段
String json1 = JsonTool.serialize(dept, "~L/SysUser/:ci/dept/,~L/Department/:ci/users/");
默认情况下,也可以用注解来作为序列化策略。
@Json(
policys={
@JsonPolicy(location="name", action="nn/newUserName/"),
@JsonPolicy(location="deleteList", action="?empty->[]")
}
)
public class User{
String name="joel";
int age =12;
double salary=12.32266;
Customer customer = new Customer();
List<Customer> list = new ArrayList<Customer>();
List<Customer> deleteList = null;
//getter and setter 方法必须有,在此忽略
}
@Json(
policys={
@JsonPolicy(location="name", action="nn/userName/")
}
)
class Customer{
String name="lijz";
int age=11;
Date bir = new Date();
//getter and setter 方法必须有,在此忽略
}
更多例子参考单元测试代码 https://git.oschina.net/xiandafu/beetl-json/tree/master/test
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。