美文网首页
巧用fastjson自定义序列化类实现字段的转换

巧用fastjson自定义序列化类实现字段的转换

作者: 爱余星痕 | 来源:发表于2018-05-14 11:17 被阅读0次

    项目中突然需要增加另一个字段的查找,而这个查找需要查另一张表的记录。
    但现在产品很多地方都要增加该字段,如何最快的实现该功能呢。
    办法如下:
    通过fastjson序列化时,增加该字段的序列化类,该序列化类通过CODE查找名称,并序列化到前端。

    • VO的功能修改
    @Data
    public class SysDictItemSelectVo implements Serializable{
    
        private static final long serialVersionUID = 1L;
        @JSONField(serializeUsing=ToSystemNameSerializer.class)
        private String systemName;
    
        public String getSystemName(){
            return this.getCode();
        }
        }
    
    • 序列化的类的属性
    
    import com.alibaba.fastjson.serializer.JSONSerializer;
    import com.alibaba.fastjson.serializer.ObjectSerializer;
    import com.alibaba.fastjson.serializer.SerializeWriter;
    
    import java.io.IOException;
    import java.lang.reflect.Type;
    
    public    class ToSystemNameSerializer implements ObjectSerializer {
    
        public static final  ToSystemNameSerializer instance = new  ToSystemNameSerializer();
    
        @Override
        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
                          int features) throws IOException {
            SerializeWriter out = serializer.out;
    
            if (object == null) {
                out.writeNull();
                return;
            }
    
            //原来的值code
            String strVal = object.toString();
            System.out.println(strVal);
            //通过code查找相关名称,测试先写死值 
            String name="std";
            out.writeString(name);
    
        }
    }
    
    

    经测试,序列化正常,其他地方只需要在VO增加该注解即可.

    相关文章

      网友评论

          本文标题:巧用fastjson自定义序列化类实现字段的转换

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