有没有办法指示 Jackson 2 ObjectMapper 使用自定义 Classloader 反序列化 JSON 字符串?
问问题
2045 次
3 回答
1
这是解决方案:
ClassLoader myClassLoader = ...
ObjectMapper om = new ObjectMapper();
TypeFactory tf = TypeFactory.defaultInstance()
.withClassLoader(myClassLoader);
om.setTypeFactory(tf);
于 2016-07-29T10:33:45.233 回答
0
查看 Jackson Wiki for Modules,杰克逊模块可用于创建自定义序列化/反序列化。虽然 wiki 谈论他们可以做什么
添加自定义序列化器和反序列化器
添加混合注释
覆盖或添加 AnnotationIntrospector
访问 SerializationConfig 和 DeserializationConfig 设置。
它的细节很简单,只是举一个非常基本的例子。Module JavaDoc也很注重细节。幸运的是,该 wiki 还在GitHub 上提供了现有 Jackson 模块的列表,如果您需要从头开始创建自己的模块,作为示例会更有帮助。
于 2012-06-01T14:44:47.747 回答
0
为了保留现有的TypeMapper
,您可能想要做这样的事情(这是 Scala,但在 Java 中也可以使用相同的模式),您可以在其中调整当前的类型工厂。
def updateClassLoader(cl: ClassLoader): Unit = {
objectMapper.setTypeFactory(objectMapper.getTypeFactory.withClassLoader(cl))
}
这将从可能的先前配置调用中保留缓存的类型数据,如下所示:
mapper.registerModule(new Jdk8Module)
.registerModule(new JavaTimeModule)
.registerModule(new DefaultScalaModule)
于 2019-04-17T21:07:58.807 回答