Я пытаюсь десериализовать JSON в Java POJO, используя Джексона.
Json выглядит как
"foo": {
"one": {
"a":1,
"b":"string"
}
"three":{
"a":2
"b":"another"
}
...
}
И класс, в который я хочу десериализоваться, имеет это поле:
public class Myclass {
private Map<MyEnum, MyPojo> foo;
//setter and getter
public static MyPojo {
private int a;
private String b;
}
}
И мой тип перечисления выглядит так:
public enum MyEnum {
one("data1"),two("data2")
@JsonValue
String data;
EnumAttrib(String data) {
this.data = data;
}
private static Map<String, MyEnum> ENUM_MAP = new HashMap();
static {
for (MyEnum a: MyEnum.values()) {
ENUM_MAP.put(a.data, a);
}
}
@JsonCreator
public static MyEnum fromData(String string) {
return ENUM_MAP.get(string);
}
}
Это решение работает хорошо до тех пор, пока у JSON есть известные ключи, захваченные MyEnum. Как можно пропустить некоторые элементы JSON из сериализации (в этом примере "three
"), если это не определено в MyEnum