例如,我有以下课程
public class Profile {
@JsonFormat(pattern = "dd-MM-yyyy")
private LocalDate dateOfBirth;
//seter, getter
}
在控制器中,我将此类用作@ResponseBody参数
@RestController
@RequestMapping("/profiles")
public class ProfileController {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> createProfile(@RequestBody Profile newProfile) {
//...
}
}
如果我使用以下JSON向/profile
发送POST请求,则可以正常运行
{
"dateOfBirth": "21-01-1985"
}
如果没有使用Profile#dateOfBirth
或任何其他注释注释@JsonFormat
类,我怎样才能实现此行为?我想将此实体用于不同的日期格式,因此我需要在Profile
类之外定义日期格式。
答案 0 :(得分:0)
使用Jackson自定义反序列化。 有几种方法可以处理它。这个博客似乎有一个很好的答案。 https://www.sghill.net/how-do-i-write-a-jackson-json-serializer-deserializer.html
答案 1 :(得分:0)
您可以使用@JsonProperty("obj-name")
。例如
public class Profile {
@JsonProperty("dateOfBirth")
private LocalDate dateOfBirth;
//seter, getter
}
Json请求将
{
"dateOfBirth": "21-01-1985"
}
@JsonProperty()
将直接映射特定的json对象字段。所以现在你可以要求任何日期格式。如果您想最好地验证某些日期格式,建议的方式是Custom Annotation
希望这会非常有帮助......
干杯...