【发布时间】:2016-10-16 21:59:25
【问题描述】:
我在一次采访中被问到你有一个 API - 比如getCustomer。此 API 返回客户的详细信息。但是为了减少 REST 响应的大小,我们只需要返回具有值的属性。因此,如果客户不存在middleName,我们不应该在响应中看到{ middleName=null }。我们该怎么做?
【问题讨论】:
标签: rest jersey resteasy restful-authentication
我在一次采访中被问到你有一个 API - 比如getCustomer。此 API 返回客户的详细信息。但是为了减少 REST 响应的大小,我们只需要返回具有值的属性。因此,如果客户不存在middleName,我们不应该在响应中看到{ middleName=null }。我们该怎么做?
【问题讨论】:
标签: rest jersey resteasy restful-authentication
您可以使用您的消息转换器配置对其进行配置。例如。如果使用 Jackson Message Converter,可以使用 Jackson Object 映射器的serialization inclusion property 进行设置。
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
【讨论】:
使用 Jackson,您可以通过两种方式从 JSON 序列化中排除空值:
通过在 ObjectMapper 中设置属性 JsonInclude.Include.NON_NULL 全局(对于所有类),正如 ritesh.garg 已经建议的那样
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
在单个类级别,使用 @JsonInclude(Include.NON_NULL) 注释类,如下所示:
@JsonInclude(Include.NON_NULL)
public class Customer {
}
这里有详细的解释和代码示例:Jackson: how to exclude null value properties from JSON serialization
【讨论】: