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;
}
网友评论