snack - Json 序列化注解使用
注解 | 描述 | 备注 |
---|---|---|
ONodeCreator | 标准对象创建入口 | |
ONodeAttr | 标注节点属性元 | (相对于 Options)提供了局部的定制支持 |
1、ONodeCreator
使用 ONodeCreator,可以指定反序列化用的构造方法。
import org.noear.snack4.annotation.ONodeAttr;
import org.noear.snack4.annotation.ONodeCreator;
import java.util.Date;
public class DateDo {
public Date date1 = new Date();
@ONodeAttr(format="yyyy-MM-dd")
public Date date2 = new Date();
public DateDo() {
}
public DateDo(Date date1) {
this.date1 = date1;
}
@ONodeCreator
public DateDo(Date date1, Date date2) {
this.date1 = date1;
this.date2 = date2;
}
}
2、ONodeAttr
ONodeAttr 的使用,优先级高于 Options,且用于局部。以时间为例:
import org.noear.snack4.annotation.ONodeAttr;
import java.util.Date;
public class DateDo {
public Date date1 = new Date();
@ONodeAttr(format="yyyy-MM-dd")
public Date date2 = new Date();
}
更详细的 ONodeAttr 接口:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
public @interface ONodeAttr {
/**
* 键名
*/
String name() default "";
/**
* 描述
*/
String description() default "";
/**
* 必须的
*/
boolean required() default true;
/**
* 格式化
*/
String format() default "";
/**
* 时区
*/
String timezone() default "";
/**
* 扁平化
*/
boolean flat() default false;
/**
* 特性
*/
Feature[] features() default {};
/**
* 乎略
*/
boolean ignore() default false;
/**
* 是否编码(序列化)
*/
boolean encode() default true;
/**
* 是否解码(反序列化)
*/
boolean decode() default true;
/**
* 自定义编码器
*/
Class<? extends ObjectEncoder> encoder() default ObjectEncoder.class;
/**
* 自定义解码器
*/
Class<? extends ObjectDecoder> decoder() default ObjectDecoder.class;
}