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

野蝇忽略杰克逊注释,不使用@Provider类

沈思博
2023-03-14

我环顾四周,不认为这是其中任何一个的复制品:

在《野蝇》中使用杰克逊注释

杰克逊注释被忽略

野蝇和杰克逊@JsonIgnore注释

使用野蝇10并部署具有以下类的战争:

@Provider
public class JaxApplication implements ContextResolver<ObjectMapper> {
  private final ObjectMapper mapper;

  public JaxApplication() {
    mapper = new ObjectMapper();
    mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
    //throw new RuntimeException("HERE");
  }

  @Override
  public ObjectMapper getContext(Class<?> type) {
    throw new RuntimeException("HERE");
    //return mapper;
  }

}

如果构造函数未被注释,我会在部署时看到该构造函数中引发的异常,但在向 REST 服务发出请求时,我看不到 getContext 方法中的异常。

我在实体上有一个@JsonIgnore注释,它不起作用,我使用的@JsonIdtyInfo注释也不起作用

该类如下所示(包括导入,以验证我使用的是 com.fasterxml。

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * Created by mb995a on 7/29/2016.
 */
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@request_id", scope=Request.class)

public class Request extends BaseEntity {

我需要在我的REST配置中做一些特殊的事情吗?

@ApplicationPath("api")
public class RestApplication extends Application {
    public RestApplication() {
        super();
    }
}

有什么想法吗?

编辑说:我也有一个使用ObjectMapper的单元测试,它可以正确序列化。

共有1个答案

慕宏博
2023-03-14

对于其他人,我想通了这一点。问题是我的pom中有杰克逊罐子,没有标记为“提供”范围。这意味着我的战争文件的 WEB-INF/lib 目录中有 jar。

即使它们是Wildfly的jar的完全相同的版本(我使用与我使用的WF版本相同的版本属性),它们也不能正常工作。看起来hashCode()对于来自不同jar的相同注释是不同的,即使它们是完全相同的(校验和一切)。

因此,解决方案是在maven中将所有Jackson的东西的依赖项标记为< code>provided。

 类似资料:
  • 我正在尝试将jboss wildfly 8配置为将Jackson用于JSON。所以我补充说 我的耳朵工程。但在部署时,我会遇到以下错误: 原因:java。lang.LinkageError:加载程序约束冲突:解析重写的方法“org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider$Proxy$\u$$WeldClien

  • 问题内容: 我有以下json文件: 但是java模型如下: Jackson解析时会引发异常,因为“ externalId”字段没有getter或setter方法。有没有可以用来忽略json字段的装饰器? 问题答案: 您可以使用注释;如果这只是您要跳过的一个值,则类似于: 或忽略任何无法使用的东西: 还有其他方法可以做到这一点,其余的请查看FasterXML Jackson wiki 。

  • 处理注释 mixin 的杰克逊代码是否可以由第三方重用来混合非杰克逊注释? 处理混合蛋白的核心杰克逊类是什么?

  • 简短版: 我使用的是泽西岛 1.17 和杰克逊 2.1.4,但泽西岛忽略了我使用的每一个杰克逊注释。为什么!?有没有人遇到过同样的问题? 长版本: 我有一个RESTful Web服务,它使用Jersey 1.17和Jackson 1.9.2,我使用@JsonManagedReference和@JsonBackReference注释来解决双向关系的问题,并且一切正常。 前几天,我看到了包含@Json

  • 问题内容: 创建类的首选方法是 一成不变的 可以使用Jackson进行序列化/反序列化 易于阅读且样本量低 最好是,我希望这样的工作: 然后将所有字段都设为。但是,它甚至不编译(我不确定为什么)。使用 将编译但仅产生 问题答案: 添加 ConstructorProperties : 用以下行在适当的位置创建文件: 向您的班级添加lombok 批注以使其不可变 然后,Jackson的序列化和反序列化

  • 我在一个jaxb注释类中有一个方法,当且仅当它使用jersey 1.16编组到JSON时,我想编组一个值,它在下面使用jackson 1.9。我希望使用jaxb的@XmlTransient和jackson的@JsonProperty以这样的方式完成这项工作: …但马歇尔似乎一点也不觉得。没有遇到错误。