java 泛型枚举的Jackson数据绑定实现

new9mtju  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(96)

我正在尝试正确保存/加载包含通用枚举的数据。当前,该对象包含一个java.lang.Class对象(clazz),该对象被序列化到字段“classclass”中。“al”字段包含枚举的值。我的目标是创建一个自定义的Jackson验证器,它使用“瓦尔”字段和“类”字段,然后运行Enum.valueOf()来创建Enum的示例。
但是,当我运行解析器时,它抛出一个JsonMappingException,并显示Cannot construct instance of 'java.lang.Class', problem: me.ExampleProject.Enums$RevealType$1
我似乎不能过去这一个问题,不知道如何进行。如果你能帮忙的话,我将不胜感激。
JSON示例:

"revealType": {
    "type": "enumspec",
    "id": "Reveal Type",
    "val": "SKIRT",
    "enumclass": "me.ExampleProject.Enums.RevealType",
    "ro": false,
    "sec": "Miscellaneous"
}

验证码:

Class clazz = MAP.convertValue(jsonNode.get("enumclass"), new TypeReference<Class<? extends Enum<?>>>() {});
Enum<?> value = Enum.valueOf(clazz, jsonNode.get("val").asText());
pdkcd3nj

pdkcd3nj1#

Jorn的评论
读取String格式的类,然后使用Class.forName
对我很有效。ClassNotFoundException的问题是由于我使用PF4J加载插件。我必须注册一个所有插件类加载器的列表,并使用方法Class.forName(name, true, pluginClassLoader)手动传递插件类加载器来查找类。

相关问题