项目场景:
配置管理平台:不同企业下的不同用户,它们的角色不同,自然所拥有的权限也不同。
项目场景:现在需要获取,登录用户所拥有权限的菜单。
问题描述:
将用户所拥有权限的菜单查询出来,放入菜单资源树形结构类里,以JSON的格式传给返回给前端。此时,实体里有空值的字段被省略,没有传给前端。
在实际业务中,不论返回实体里的字段是否为空,有需求都要显示出来的情况很多,如果为空可以显示为null。
解决方案:
反例:
Spring MVC中,在controller层使用@ResponseBody返回json时,这里使用的是jackson。
在使用@ResponseBody注解时,返回的对象中,有的字段为空,如果想字段为空时,或者字段为默认值时,不返回该字段。有一下三种方法:
1. 在实体类上添加注解
优点方便灵活,缺点需要在每一个实体上进行配置
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderDTO {
}
//将该标记放在属性上,如果该属性为NULL则不参与序列化
//如果放在类上边,那对这个类的全部属性起作用
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
2. 在配置文件中配置
配置完成后,所有通过@res