Class LowercaseEnumJsonMapperCustomizer
java.lang.Object
io.leandev.appfuse.json.LowercaseEnumJsonMapperCustomizer
- All Implemented Interfaces:
org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer
public class LowercaseEnumJsonMapperCustomizer
extends Object
implements org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer
讓 HTTP 層的 enum wire 值一律小寫
為何需要獨立的 customizer:Spring Boot 的 HTTP message converter 取用的是自動配置的
JsonMapper bean(jacksonJsonMapper),不是應用自行宣告的 ObjectMapper bean——
兩者並存時,應用那顆只服務直接注入它的元件,對 request/response 序列化毫無影響。
故 ObjectMapperBuilder.withLowercaseEnums() 只覆蓋獨立 mapper;要讓 API 的 wire 值
一致,必須另外註冊本 customizer。
註冊方式(顯式 opt-in,框架不 auto-configure):
@Bean
JsonMapperBuilderCustomizer lowercaseEnums() {
return new LowercaseEnumJsonMapperCustomizer();
}
啟用後 PENDING_CONFIRMATION 序列化為 "pending_confirmation",反序列化容忍大小寫;
enum 不需逐個標註 @JsonValue / @JsonCreator。DB 持久化不受影響
(@Enumerated(EnumType.STRING) 仍存 name())。查詢參數/路徑變數另見
StringToEnumConverterFactory。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcustomize(tools.jackson.databind.json.JsonMapper.Builder builder)
-
Constructor Details
-
LowercaseEnumJsonMapperCustomizer
public LowercaseEnumJsonMapperCustomizer()
-
-
Method Details
-
customize
public void customize(tools.jackson.databind.json.JsonMapper.Builder builder) - Specified by:
customizein interfaceorg.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer
-