【发布时间】:2022-01-23 17:36:49
【问题描述】:
我有一个像下面这样的枚举类。我需要在 Java8 或更高版本中非常有效地将 Json 字符串(具有键值对格式)反序列化为以下枚举对象。
public enum TestEnum {
RED("Apple","Fruit"),
GREEN("Hulk", "Monster");
@JsonProperty("name")
private final String name;
private final String type;
@JsonCreator
public static TestEnum fromValue(String v) {
System.out.println("fromValue() --> : " + v);
for (TestEnum myEnum : values()) {
if (myEnum.name.equals(v)) {
return myEnum;
}
}
throw new IllegalArgumentException("invalid string value passed: " + v);
}
}
当我以“Key:Value”格式传递输入值时,@JsonCreator 方法正在接收空值(fromValue() --> : null)。但是当我只用值传递输入时(EX:“苹果”)。 @JsonCreator 方法正在正确获取值。我在这里错过了什么?请任何帮助。提前致谢。
public class Sample {
public static void main(String[] args) throws JsonProcessingException {
//String input = "\"Apple\"";
String input = "{\n \"scanType\": \"Auto-LightWeight\"\n}";
System.out.println("Input is : " + input);
ObjectMapper mapper = new ObjectMapper();
System.out.println("Enum : " + mapper.readValue(input, TestEnum.class));
}
}
【问题讨论】:
标签: java java-8 enums enumeration java-9