Pra*_*eek 5 java enums serialization json jackson
我正在尝试使用jackson将json反序列化为枚举.如果工厂方法只有一个参数,它工作正常.一旦我们添加更多参数,它就会停止工作.
这是我试过的代码示例.
public enum Test {
FIRST(1, "first");
private final int intProp;
private final String stringProp;
Test(int i, String stringProp) {
this.stringProp = stringProp;
this.intProp = i;
}
private static final Map<String, Test> allEntries = new HashMap<>(Test.values().length);
static {
for(Test each : Test.values()){
allEntries.put(getCode(each.intProp, each.stringProp), each);
}
}
private static String getCode(int i, String s){
return s + i;
}
@JsonCreator(mode = Mode.PROPERTIES)
public static Test forValues(@JsonProperty("intProp") int intProp,
@JsonProperty("stringProp") String stringProp
){
return allEntries.get(getCode(intProp,stringProp));
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下代码反序列化json
String json = "{\"intProp\":1,\"stringProp\":\"first\"}";
ObjectMapper mapper = new ObjectMapper();
Test enumValue = mapper.readValue(json, Test.class); //fails
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外
com.fasterxml.jackson.databind.JsonMappingException: Unsuitable method
Run Code Online (Sandbox Code Playgroud)
版本:jackson-databind 2.5.1,jackson-annotations 2.5.0
我不想写自定义反序列化器,我的方法是否有错误或者杰克逊不支持该选项?
使用a class代替时也可以使用相同的功能enum.
| 归档时间: |
|
| 查看次数: |
1503 次 |
| 最近记录: |