美文网首页
Fastjson 基础之注解

Fastjson 基础之注解

作者: Tinyspot | 来源:发表于2023-02-18 07:43 被阅读0次

1. @JSONField

  • name 指定序列化后的名字
  • ordinal 指定序列化的顺序
  • serialize 是否序列化
  • deserialize 是否反序列化
  • serialzeFeatures 序列化时的特性定义
@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

  • includes 要被序列化的字段
  • orders 指定顺序
@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;
    }

相关文章

网友评论

      本文标题:Fastjson 基础之注解

      本文链接:https://www.haomeiwen.com/subject/ctfvkdtx.html