3 回答

TA貢獻1864條經(jīng)驗 獲得超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 中實現(xiàn)將傳入文本轉換為小寫的邏輯
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條經(jīng)驗 獲得超9個贊
您可以使用 Spring消息轉換器對請求正文進行更改,為Json 轉換器(將JSON轉換為對象)定義一個自定義轉換器,并像下面一樣為 spring-boot 添加它。
要編寫消息轉換器,請擴展 Spring AbstractHttpMessageConverter(用于新的自定義轉換器),并覆蓋三個方法 readInternal()、writeInternal() 和 supports() 。
Spring 使用 HttpMessageConverters 來呈現(xiàn) @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條經(jīng)驗 獲得超4個贊
只需在控制器中執(zhí)行即可。我不認為消息轉換器是轉換數(shù)據(jù)的地方
轉換案例意味著某種業(yè)務約束或規(guī)則。因此,我認為您希望在控制器的代碼中明確地發(fā)生這種情況,而不是注釋的某些屬性。然后,如果需求發(fā)生變化(因為它們總是如此),你知道在哪里以及如何改變它。
添加回答
舉報