Solon v3.6.0

snack - Json 序列化注解使用

</> markdown
注解描述备注
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;
}