9SpringBoot中使用fastjson和jackson序列化返回前端总结


  • 一、前言

  • 二.Springboot默认使用的jackson的序列化和反序列化

  • 三.SpringBoot使用的fastjson的序列化和反序列化

  • 四.总结


一、前言

环境:SpringBoot 2.1.5.RELEASE

需求:一些涉及到前后端的项目接口返回的实体类进行序列化, 一些字段可能需要特定的格式化,例如Float的字段会带.0后缀,其他的可能要求保留两位小数或者其他的格式化需求。通过增加返回Vo实体的字段,进行循环方法处理是常规的解决方案, 但是其实无论fastjson还是jackson都是支持自定义序列化实现类,通过注解方式来改变返回字段的格式。

二.springboot默认使用的jackson的序列化和反序列化

//实体类
@Data
public class User {
    @JsonSerialize(using=CustomDoubleIntSerialize.class)
    private Float newUsers
;
    }
    
//自定义序列化    
public class CustomDoubleIntSerialize extends JsonSerializer<Float{
    private DecimalFormat df = new DecimalFormat("###.##");

    @Override
    public void serialize(Float value, JsonGenerator jgen,
                          SerializerProvider provider)
 throws IOException,
            JsonProcessingException 
{
        jgen.writeString(df.format(value));

    }
}    
    
    

三.springboot使用的fastjson的序列化和反序列化

//实体类
@Data
public class User {
    @JSONField(serializeUsing = AValueSerializer.class)
    private Float newUsers
;
}
//自定义序列化实现
public class AValueSerializer implements ObjectSerializer {
    private DecimalFormat df = new DecimalFormat("###.##");
    @Override
    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
                      int features)
 throws IOException 
{
        Float value = (Float) object;
        String text = df.format(value) + "元";
        serializer.write(text);
    }
}

四.总结

上面的使用只是单个序列化的例子,像是时间格式、数字格式或者其他、格式其实都是可以按照上面的方法去进行自定义,优雅的通过注解解决了json格式的返回问题。


原文始发于微信公众号(Java时间屋):9SpringBoot中使用fastjson和jackson序列化返回前端总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/251889.html

(0)
java小白的头像java小白

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!