当jar中有另一个对象映射器从依赖项定义时,我如何使我的对象映射器工作?
我试图用泽西2号在码头下运行时的霸气。问题是,一旦我将Swagger JAX-RX jar添加到类路径中,我的对象映射器就没有被发现,因此我丢失了对象的自定义序列化。
@Provider
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
}
我已经将问题发布给了Swagger的维护者,在那里你可以阅读详细信息。
在Jersey内部调试了几个小时后,我发现Swagger自己的对象映射器com.wordnik.swagger.jaxrs.json.jacksonJsonProvider调用super.setmapper(commapper)
,将非空值设置为providerbase._mapperconfig._mapper
。稍后,当http请求处理程序试图序列化我的类的实例时,providerbase.locatemapper
,其主体如下
public MAPPER locateMapper(Class<?> type, MediaType mediaType)
{
// First: were we configured with a specific instance?
MAPPER m = _mapperConfig.getConfiguredMapper();
if (m == null) {
// If not, maybe we can get one configured via context?
m = _locateMapperViaProvider(type, mediaType);
if (m == null) {
// If not, let's get the fallback default instance
m = _mapperConfig.getDefaultMapper();
}
}
return m;
}
在正确的代码流中,_mapperconfig.getConfiguredMapper()
返回null,随后调用_locatemapperviaProvider
,查找我的自定义映射器。对于Swagger,它默认为com.fasterhtml" target="_blank">xml.jackson.jaxrs.json.jsonMapperConfigurator
,并且我的自定义json序列化程序永远不会被调用。
我创建了一个小项目,它在这里重现了这个问题。
你们建议怎么解决这个问题?我可能可以在TTLocalDate
类型的每个属性上指定反序列化器,但它会污染代码:(
正如fehguy在问题报告中指出的,使用最新的Swagger版本和SwaggerSerializers
应该可以解决这个问题。以前,SwaggerJacksonJsonProvider
将用于所有序列化,而SwagerSerializers
仅用于Swagger
模型对象
public class SwaggerSerializers implements MessageBodyWriter<Swagger> {
@Override
public boolean isWriteable(Class type, Type genericType, Annotation[] annotations,
MediaType mediaType) {
return Swagger.class.isAssignableFrom(type);
}
问题内容: 当jar中的依赖项中定义了另一个对象映射器时,如何使对象映射器工作? 我正在尝试将Swagger与在Jetty下运行的Jersey 2 一起使用。问题是,一旦我将Swagger JAX-RX jar添加到类路径中,就没有发现我的对象映射器,因此我失去了对象的自定义序列化。 这是我的对象映射器的定义方式 我已将问题发布给Swagger的维护者,您可以在其中阅读详细信息。 在Jersey的
我试图从AsyncTask线程中的ObjectMapper获取一个JSON格式的字符串,并且我一直在获取OutOfMemoryError并且在清单文件中已经添加了行 在DoInBackground中执行的AsyncTask方法: Fiscalizacao类: Stacktrace到im存在的问题:
介绍 (Introduction) ObjectMapper是Jackson库的主要actor类。 ObjectMapper类ObjectMapper提供了从基本POJO(普通旧Java对象)或从通用JSON树模型(JsonNode)读取和写入JSON的功能,以及执行转换的相关功能。 它还可以高度自定义,可以使用不同样式的JSON内容,并支持更高级的Object概念,如多态和对象标识。 Objec
我正在使用Rest Assured为我的spring boot项目做控制器测试。我们在序列化对象上使用Java 8 ZonedDateTime字段,在序列化对象上使用jackson 2字段。运行项目时,序列化按预期工作,但运行放心测试时,日期序列化不正确。我知道Rest Assured使用它自己的ObjectMapper配置,但我的问题是,无论我做什么,Rest Assured似乎都忽略了我的Ob
ObjectMapper 是使用 Swift 编写的框架,能帮助你转换 Model 对象成为 JSON,反之亦然。