赞
踩
常见:使用fastjson进行需要对字段进行一些特殊处理,比如时间格式,前后端名字不一致,字段为null是否依然序列化等问题。那么fastjson的@JSONField就能很好的解决这些问题。
@JSONField
注解的源码如下
@Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) public @interface JSONField { int ordinal() default 0; //是根据fieldName的字母序进行序列的,你可以通过ordinal指定字段的顺序 String name() default ""; //序列化和反序列化时候的别名 String format() default ""; //用于字符串格式的日期转换 boolean serialize() default true; // 是否参与序列化 boolean deserialize() default true; //是否参与反序列化 SerializerFeature[] serialzeFeatures() default { }; //序列化选项 SerializerFeature.WriteNullNumberAsZero 如空Number填充0 Feature[] parseFeatures() default { }; //反序列化选项 String label() default ""; //标签, boolean jsonDirect() default false; //当你有⼀个字段是json字符串的数据,你希望直接输出,⽽不是经过转义之后再输出。 Class<?> serializeUsing() default Void.class; // 属性的序列化类,可定制。可有现存的,比如本来是Long,序列化的时候转为String:serializeUsing= ToStringSerializer.class Class<?> deserializeUsing() default Void.class; // 属性的反序列化类,可定制。 String[] alternateNames() default { }; //参与反序列化时候的别名 boolean unwrapped() default false; // 对象映射到父对象上。不进行子对象映射。简单而言,就是属性为对象的时候,属性对象里面的属性直接输出当做父对象的属性输出 String defaultValue() default ""; //设置默认值 }
现在开始分别开始讲解如何使用:
1、ordinal 、name 、serialize、 deserialize、 format、defaultValue
public class JSONController {
public static void main(String[] args) {
Nation nationBean1 = Nation.builder().dress("现代服饰").num(1314).
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。