将 JSON 请求中的字符串映射到请求 POJO 中的枚举
Map string in JSON request to Enum in Request POJO
我有一个像这样的枚举:
public enum Level {
HIGH ("hi"),
MEDIUM("med"),
LOW ("lo")
;
private final String levelCode;
private Level(String levelCode) {
this.levelCode = levelCode;
}
}
此枚举是另一个请求 class 中的元素,例如:
public class RequestPOJO{
Level level;
int somefield1; //other instance varilables
//...... other instance varilables
}
我想将 JSON 请求中的字符串字段(名称为 levelCode)映射到此枚举。我正在使用 Jackson 进行序列化。有没有办法将请求中的这个字符串字段直接映射到这个枚举。
您可以对 enum
中的新方法使用 @JsonValue
注释。该方法应该 return String
在您的示例中只不过是 levelCode
。如果这样做,这将解决您的序列化和反序列化问题。
只是为了让您了解情况,如果 enum
有一个 int
字段,由于 Jackson 的错误,这将不会以相同的方式工作。在这种情况下,您需要采用不同的方法,使用 @JsonCreator
.
实现示例可以参考my blog
我有一个像这样的枚举:
public enum Level {
HIGH ("hi"),
MEDIUM("med"),
LOW ("lo")
;
private final String levelCode;
private Level(String levelCode) {
this.levelCode = levelCode;
}
}
此枚举是另一个请求 class 中的元素,例如:
public class RequestPOJO{
Level level;
int somefield1; //other instance varilables
//...... other instance varilables
}
我想将 JSON 请求中的字符串字段(名称为 levelCode)映射到此枚举。我正在使用 Jackson 进行序列化。有没有办法将请求中的这个字符串字段直接映射到这个枚举。
您可以对 enum
中的新方法使用 @JsonValue
注释。该方法应该 return String
在您的示例中只不过是 levelCode
。如果这样做,这将解决您的序列化和反序列化问题。
只是为了让您了解情况,如果 enum
有一个 int
字段,由于 Jackson 的错误,这将不会以相同的方式工作。在这种情况下,您需要采用不同的方法,使用 @JsonCreator
.
实现示例可以参考my blog