fastjson @JSONField 使用
应用:标注在类的属性字段上,对字段属性序列化
******************
相关注解
@JSONField
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
public @interface JSONField {
int ordinal() default 0; //序列化字段在类中的输出顺序
String name() default ""; //字段输出名称
String format() default ""; //字段输出格式,常用于日期格式化
boolean serialize() default true; //是否序列化
boolean deserialize() default true; //是否反序列化
Class<?> serializeUsing() default Void.class; //自定义序列化类
Class<?> deserializeUsing() default Void.class; //自定义反序列化类
SerializerFeature[] serialzeFeatures() default {};
Feature[] parseFeatures() default {};
String label() default "";
boolean jsonDirect() default false;
String[] alternateNames() default {};
boolean unwrapped() default false;
String defaultValue() default "";
}
******************
示例 1
@Data
class People{
private String id;
private String name;
private Integer age;
}
@Data
class Person{
@JSONField(serialize = false)
private String id;
@JSONField(name = "person.name")
private String name;
@JSONField(ordinal = 1)
private Integer age;
}
public class Test {
public static void main(String[] args){
People people=new People();
people.setId("1");
people.setName("瓜田李下");
people.setAge(20);
Person person=new Person();
person.setId("2");
person.setName("瓜田李下");
person.setAge(20);
System.out.println(people);
System.out.println(person);
System.out.println(JSON.toJSONString(people));
System.out.println(JSON.toJSONString(person));
}
}
***************
控制台输出
People(id=1, name=瓜田李下, age=20)
Person(id=2, name=瓜田李下, age=20)
{"age":20,"id":"1","name":"瓜田李下"}
{"person.name":"瓜田李下","age":20}
******************
示例 2
@Data
class Order{
private String orderId;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
private LocalDateTime payTime;
private Double price;
private Integer amount;
}
public class Test2 {
public static void main(String[] args){
Order order=new Order();
order.setOrderId("1");
order.setCreateTime(LocalDateTime.now());
order.setPayTime(LocalDateTime.now().plusMinutes(2));
order.setPrice(10d);
order.setAmount(8);
System.out.println(order);
System.out.println(JSON.toJSONString(order));
}
}
***************
控制台输出
Order(orderId=1, createTime=2020-07-18T12:42:05.271725600, payTime=2020-07-18T12:44:05.271725600, price=10.0, amount=8)
{"amount":8,"createTime":"2020-07-18 12:42:05","orderId":"1","payTime":"2020-07-18T12:44:05.271725600","price":10.0}
localDateTime的输出格式设置为 yyyy-MM-dd HH:mm:ss