Fastjson 基础之注解

2023-02-18  本文已影响0人  Tinyspot

1. @JSONField

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface JSONField {
    int ordinal() default 0;
    String name() default "";
    String format() default "";
    SerializerFeature[] serialzeFeatures() default {};
}

1.1 示例

@Data
public class User {

    @JSONField(name = "userName", ordinal = 1)
    private String name;

    /**
     * 序列化字段的顺序,默认是0
     */
    @JSONField(ordinal = 2)
    private Integer age;

    @JSONField(serialize = false)
    private Boolean flag;

    @JSONField(format = "yyyy-MM-dd")
    private Date birthday;
}

1.2 name 用处

@Test
public void test() {
    User user = new User();
    user.setName("Tinyspot");
    user.setAge(20);
    System.out.println(JSON.toJSONString(user));
}

打印结果 {"userName":"Tinyspot","age":20}, 注意不是答应的 name

@Test
public void test() {
    String jsonStr = "{\"userName\":\"Tinyspot\",\"age\":20}";
    User user = JSON.parseObject(jsonStr, User.class);
}

打印 User(name=Tinyspot, age=20, flag=null, birthday=null)

2. @JSONType

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface JSONType {
    String[] orders() default {};
    String[] includes() default {};
    String[] ignores() default {};
}

示例:

    @JSONType(includes = {"name", "age"}, orders = {"name", "age"})
    public class User {
        private String name;
        private Integer age;
        private Boolean flag;
        private Date birthday;
    }
上一篇 下一篇

猜你喜欢

热点阅读