gpt4 book ai didi

Java 如何创建一个为 addDeserializer 扩展 SimpleModule 的模块类?

转载 作者:行者123 更新时间:2023-12-01 16:31:47 27 4
gpt4 key购买 nike

目前,我正在使用自定义 JsonDeserialize 类注册我的类,并在我的应用程序启动中声明一个新的 SimpleModule,类似于

public static void configure(ObjectMapperModule mapper) {
SimpleModule module = new SimpleModule();
module.addDeserializer(LocalFile.class, new LocalFileDeserializer());
// module add more deserializer class
mapper.registerModule(module);
}

无论如何,我是否可以创建一个扩展 SimpleModule 的类,以便我可以在构造函数中注册所有类?我已经尝试过以下但失败了,

public class MyCustomModule extends SimpleModule {
private static final SimpleModule module = new SimpleModule();

public MyCustomModule() {
initMyCustomModule();
}

final void initMyCustomModule() {
module.addDeserializer(LocalFile.class, new LocalFileDeserializer());
}
}

// In app start
mapper.registerModule(new MyCustomModule());

我已经看到 initMyCustomModule 在应用程序启动期间被调用,但是当尝试从请求反序列化我的对象时,我的反序列化类没有被调用,我在想,因为我应该在我的类中注册模块,例如:mapper.registerModule(new MyCustomModule().module)?我还注意到有一个覆盖方法

@Override
public void setupModule(SetupContext context)

但我不确定如何使用它来 addDeserializer 到上下文中...

最佳答案

看起来这可行...我不需要声明 SimpleModule 的新实例并在构造函数中使用它,我可以直接在构造函数中使用 addDeserializer ..

public class MyCustomModule extends SimpleModule {
public MyCustomModule() {
initMyCustomModule();
}

final void initMyCustomModule() {
addDeserializer(LocalFile.class, new LocalFileDeserializer());
}
}

关于Java 如何创建一个为 addDeserializer 扩展 SimpleModule 的模块类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62025602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com