REST—如何在响应中只返回所需的字段?

REST—如何在响应中只返回所需的字段?,rest,jersey,resteasy,restful-authentication,Rest,Jersey,Resteasy,Restful Authentication,在一次采访中,我被问到你有一个API,比如说getCustomer。此API返回客户的详细信息。但是为了减小REST响应的大小,我们只需要返回具有值的属性。因此,如果客户没有middleName,我们不应该在响应中看到{middleName=null}。我们如何才能做到这一点?您可以使用消息转换器配置进行配置。例如,如果使用Jackson消息转换器,可以使用Jackson对象映射器的设置 objectMapper.setSerializationInclusion(JsonInclude.Inc

在一次采访中,我被问到你有一个API,比如说
getCustomer
。此API返回客户的详细信息。但是为了减小REST响应的大小,我们只需要返回具有值的属性。因此,如果客户没有
middleName
,我们不应该在响应中看到
{middleName=null}
。我们如何才能做到这一点?

您可以使用消息转换器配置进行配置。例如,如果使用Jackson消息转换器,可以使用Jackson对象映射器的设置

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 {
    
    }
    
在这里您可以找到详细的解释和代码示例: