hts*_*ame 3 java enums json jackson
假设我有一个枚举:
public enum ParameterList {
FREQUENCY_ID("500");
...
lot's of different constants here
...
private final String param;
ParameterList(String param) {
this.param = param;
}
@Override
public String toString() {
return param;
}
}
Run Code Online (Sandbox Code Playgroud)
假设我有一个带字段的 DTO:
private String frequency;
Run Code Online (Sandbox Code Playgroud)
假设我有一个JSON:
{"500" : "100Hz"}
Run Code Online (Sandbox Code Playgroud)
我想将其映射json到我的dto,因此DTO.frequency将具有 json"500"字段的值(将是"100Hz")。
我知道只有常量必须用作属性值,但是否有一些解决方法可以使以下工作?
@JsonProperty(ParameterList.FREQUENCY_ID)
private String frequency;
Run Code Online (Sandbox Code Playgroud)
(@JsonProperty是com.fasterxml.jackson.annotation.JsonProperty,版本 2.8.0)
这个想法是在枚举ParameterList.FREQUENCY_ID将从 , 更改"500"为其他值时最小化代码编辑。
您可以尝试以下操作:
public enum ParameterList {
FREQUENCY_ID(Constants.FREQUENCY_ID_VALUE);
private final String value;
ParameterList(String value) {
this.value= value;
}
@Override
public String toString() {
return value;
}
public static class Constants {
public static final String FREQUENCY_ID_VALUE = "500";
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用:
@JsonProperty(ParameterList.Constants.FREQUENCY_ID_VALUE)
private String frequency;
Run Code Online (Sandbox Code Playgroud)