如何使用DTO向用户返回数据时剔除不需要的冗余字段
问题修复方案
你遇到的问题有两个核心原因:
- DTO类中仍保留了不需要的
method、mashTemp、temp字段,序列化框架会默认输出所有带有getter方法的类字段 - 序列化框架默认未过滤null值字段,导致赋值为空的冗余字段也会被输出
第一步:清理DTO冗余字段
直接删除Beer类中不需要的字段,仅保留你需要返回的业务字段即可:
public class Beer { private Integer id; private String name; private String description; // 仅保留上述三个字段对应的getter、setter方法 }
修改完成后,返回结果就不会再出现method、mashTemp、temp三个冗余字段。
第二步:(可选)配置序列化规则过滤null值
如果后续业务中DTO存在允许为空的字段,不想让null值字段出现在返回结果中,可以根据你使用的序列化框架做对应配置:
- 如果你用的是SpringBoot默认的Jackson序列化:
- 全局配置:在application.yml中添加如下配置
spring: jackson: default-property-inclusion: non_null - 单类配置:在Beer类上添加注解
@JsonInclude(JsonInclude.Include.NON_NULL)
- 全局配置:在application.yml中添加如下配置
- 如果你用的是FastJSON序列化:
全局配置中关闭SerializerFeature.WriteMapNullValue属性,或在Beer类上添加注解@JSONType(serialzeFeatures = DisableCircularReferenceDetect)同时关闭null值输出配置。
内容的提问来源于stack exchange,提问作者Filip Vidojevic
相关产品推荐
相关产品推荐

