ppb*_*ppb 1 jackson java-8 spring-boot jackson-databind
我有一个Spring Boot Controller
-
@RestController
public class UserController {
@PostMapping
@ResponseStatus(CREATED)
public UserResponse register( @Valid @RequestBody UserRequest userRequest) {
//return ....
}
}
Run Code Online (Sandbox Code Playgroud)
下面是UserRequest.java
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserRequest {
private String email;
//other property
}
Run Code Online (Sandbox Code Playgroud)
我在请求正文中发送以下 json -
{
"email" : "TEST@Example.com",
//some other fields.
}
Run Code Online (Sandbox Code Playgroud)
有时客户端email
以大写或驼峰形式发送,因此userRquest
我想将email
字段的值更改为小写,就像test@example.com
反序列化为UserRequest
对象时一样。
有没有什么简单的方法可以做到这一点。我可以介绍我自己的注释annotation
吗,比如@ToLowerCase
如何创建自己的注释并在UserRequest
.
仅仅引入一个新的注释并不容易@ToLowerCase
,因为那样你还需要实现一些注释处理器来完成真正的转换工作。
但您可以通过稍微不同的方式实现您的目标。在您的UserRequest
类中,用注释email
属性@JsonDeserialize
并指定 a converter
。
@JsonDeserialize(converter = ToLowerCaseConverter.class)
private String email;
Run Code Online (Sandbox Code Playgroud)
您需要自己实现转换器类,但通过从StdConverter
.
public class ToLowerCaseConverter extends StdConverter<String, String> {
@Override
public String convert(String value) {
return value.toLowerCase();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5051 次 |
最近记录: |