当前位置: 首页 > 知识库问答 >
问题:

RESTEasy与jackson导致序列化JsonMappingExcure

关苗宣
2023-03-14

当我尝试使用RESTEasy检索数据时,会出现以下异常:

原因:org。科德豪斯。杰克逊。地图JsonMappingException:找不到类org的序列化程序。冬眠代理波乔。javassist。JavassistLazInitializer,未发现创建BeanSerializer的属性(为了避免异常,请禁用SerializationConfig.Feature.FAIL_ON_EMPTY_bean))(通过引用链:les.core.modules.profile.profile[“emails”]-

我在网上查了一下,发现这是因为Jackson试图序列化数据,但数据尚未加载。我在某个地方发现了一种通过使用这样的jackson配置来禁用异常的可能性:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;

public class JacksonConfig extends JacksonJsonProvider {
    public JacksonConfig() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
//        setMapper(mapper);
    }
}

但我不知道如何让它工作,我的意思是,方法setMapper应该是什么样子?我没有用Spring。我还试着用以下内容来注释“Email”类

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

它没有帮助。我不想注释每个getter wich'@JsonProperty'或者这样,我真的很想使用配置类禁用这个异常。

以下是我的依赖项:

<dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>3.0.4.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>3.0.4.Final</version>
        </dependency>
</dependencies>

共有1个答案

严升
2023-03-14

由于RESTEasy是一个JAX-RS实现,因此可以使用JAX-RS方式定制Jackson的ObjectMapper:

import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

/**
 * ContextResolver that automatically configures and provides {@link ObjectMapper} used by Jackson.
 */
@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {

    private final ObjectMapper objectMapper = new ObjectMapper()
            .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return objectMapper;
    }
}
 类似资料:
  • 我尝试调用一个url谁接受列表。 发送的数据为 “{”时间戳“:1445958336633,”状态“:400,”错误“:”错误请求“,”异常“:”org.springframework.http.converter.httpmessagenotreadableException“,”消息“:”无法读取文档:无法反序列化START_OBJECT令牌之外的java.util.arraylist实例\n

  • 使用Dropwizard框架构建API,我使用Jackson ObjectMapper遇到了这个反序列化问题。我同时使用Joda Time和Joda Money。对于JodaTime,定义JodaModule足以解决反序列化问题。但对于JodaMoney来说,JodaModule不足以解决反序列化问题(如果我错了,请纠正我)。因此,我为JodaTime保留了JodaModule,创建了JodaMo

  • 我的Spring Boot API使用camelCase,但我需要通过我的API将一些请求代理到使用snake_case的第三方API。是否可以将Jackson配置为从snake_case反序列化第三方响应,然后将其序列化回camelCase到我的前端? 所需功能的逐步示例: 示例对象: 我调用我的API API调用第三方 第三方返回 我的API将其反序列化为 我的API序列化对象并返回 现在我使

  • 问题内容: 我无法找出使用杰克逊实现自定义序列化/反序列化的正确方法。我有很多类(〜50),它们带有应被序列化/反序列化而不是原始的原始字段。喜欢: 所有序列化和反序列化都非常相似,我只需要在整数之后添加一个后缀(C,页面,米等)。 一种简单的方法是在每个这样的字段中添加一对/ 注释并实现它们。但是我最终会得到100个 非常相似的 序列化器/反序列化器。 我想到了添加自定义注释的各个领域,说或,这

  • 可以序列化/反序列化< code >映射吗 在这种特殊情况下,我知道总是,和 - 第三方类(我有序列化器和反序列化器),其他值是盒装原语。 有可能和杰克逊做这样的事吗?使用MapSerializer/MapDeserializer可以做到这一点吗?(我找不到任何例子)

  • 主要内容:1 编写核心类,2 运行测试本文讲解如何将一个Java对象序列化为一个json文件,然后读取该json文件读取回对象。在下面的示例中,我们创建Student类。使用Jackson存储到一个student.json文件,该文件拥有Student对象的JSON表示形式。 1 编写核心类 MainApp: 2 运行测试