-
一、前言
-
二.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