我使用的是带有控制器的spring-web服务模型和验证。我有一个Color对象和一个Color服务。
@Data
public class Color {
private String name;
private long value;
private int rating;
}
在我的一个控制器中,我正在接受一个对象:
public class NewEventRequest {
@NotNull
@Size(min = 5, max = 30)
private String eventName;
/* @ValidColor */
private Color eventColor;
// private String eventColor;
}
如您所见,eventColor
子属性的类型为Color
。然而,我希望发件人能够只发送颜色名称(颜色不多,而且它们都缓存在内存中(。
我知道我可以使用字符串类型的颜色和验证器来确保颜色存在,但有没有方法也可以将其转换为color?
如果JSON
负载不适合Java
模型,则需要实现自定义的取消序列化器或转换器接口。看看这个例子:
- Jackson将JSON对象字段反序列化为单个列表属性
为什么不使用枚举类型而不是字符串?如:
public enum ColorName {
Red, Yellow, Blue, ...
}
@Data
public class Color {
private ColorName name;
private long value;
private int rating;
}
我不知道我是否正确理解你的意思,但它可以包含只有您定义的值。因此,您甚至不需要验证这些值。