3 回答
TA贡献1864条经验 获得超2个赞
@Data
@Builder
@Document
@NoArgsConstructor
@AllArgsConstructor
public class Customer extends Model {
@JsonDeserialize(using = ToLowerCaseDeserializer.class)
private String email;
@JsonDeserialize(using = ToLowerCaseDeserializer.class)
private String username;
}
在 ToLowerCaseDeserializer.java 中实现将传入文本转换为小写的逻辑
public class ToLowerCaseDeserializer extends StdDeserializer<String> {
private static final long serialVersionUID = 7527542687158493910L;
public ToLowerCaseDeserializer() {
super(String.class);
}
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
return _parseString(p, ctxt).toLowerCase();
}
}
TA贡献1820条经验 获得超9个赞
您可以使用 Spring消息转换器对请求正文进行更改,为Json 转换器(将JSON转换为对象)定义一个自定义转换器,并像下面一样为 spring-boot 添加它。
要编写消息转换器,请扩展 Spring AbstractHttpMessageConverter(用于新的自定义转换器),并覆盖三个方法 readInternal()、writeInternal() 和 supports() 。
Spring 使用 HttpMessageConverters 来呈现 @ResponseBody(或来自 @RestController 的响应)。您可以通过在 Spring Boot 上下文中添加适当类型的 bean 来贡献其他转换器。如果您添加的 bean 属于默认情况下会包含的类型(例如用于 JSON 转换的 MappingJackson2HttpMessageConverter),它将替换默认值。提供了一个 HttpMessageConverters 类型的便利 bean,如果您使用默认 MVC 配置,它始终可用。它有一些有用的方法来访问默认的和用户增强的消息转换器(例如,如果你想手动将它们注入到自定义的 RestTemplate 中,它会很有用)。
@Configuration
public class MyConfiguration {
@Bean
public HttpMessageConverters customConverters() {
HttpMessageConverter<?> additional = ...
HttpMessageConverter<?> another = ...
return new HttpMessageConverters(additional, another);
}
}
TA贡献1836条经验 获得超4个赞
只需在控制器中执行即可。我不认为消息转换器是转换数据的地方
转换案例意味着某种业务约束或规则。因此,我认为您希望在控制器的代码中明确地发生这种情况,而不是注释的某些属性。然后,如果需求发生变化(因为它们总是如此),你知道在哪里以及如何改变它。
添加回答
举报