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

jackson注释被忽略

许嘉福
2023-03-14

我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有:

jsr311-qpi-1.1.1.jar
jackson-[core|databind|annotations]-2.2.0.jar
Location: .../apache-maven-2.2.1/bin/mvnDebug.bat
working Directory: ${workspace_loc:/ohma-rest-svr}
Arguments: jetty:run
Host: localhost
Port: 8000

下面是我需要序列化的一个类的代码示例:

@XmlRootElement(name="ads-parameter")
public class DefineParameterResponse {

    private Date _createdAt = new Date();

    @JsonProperty("created-at")
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:00", timezone="CET")
    @XmlElement
    public String getCreatedAt() {
        return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(_createdAt);
    }

    @JsonProperty("created-at")
    public void setCreatedAt(Date createdAt) {
        this._createdAt = createdAt;
    }


    private String _dataTitle1 = "Default Title1";
    @XmlElement
    @JsonProperty("data-title-1")
    public String getDataTitle1() {
        return _dataTitle1;
    }

    @JsonProperty("data-title-1")
    public void setDataTitle1(String dataTitle1) {
        this._dataTitle1 = dataTitle1;
    }


    @XmlElement
    @JsonProperty("data-title-2")
    public String getDataTitle2() {
        return _dataTitle2;
    }

    @JsonProperty("data-title-2")
    public void setDataTitle2(String dataTitle2) {
        this._dataTitle2 = dataTitle2;
    }

共有1个答案

齐航
2023-03-14

一个相对常见的原因是试图使用“错误”的注释集:Jackson1.x和Jackson2.x注释存在于不同的Java包中,并且databind必须匹配主要版本。这种设计的好处是允许1.x和2.x版本并排使用,而不会发生类加载冲突;但缺点是,您必须确保您有匹配的版本。

最大的问题是框架的使用:许多JAX-RS实现(如Jersey)在默认情况下仍然使用Jackson1.x。所以我猜测您可能是间接使用Jackson1.x,但添加了Jackson2.x注释。如果是这样,则需要使用1.x注释(org.codehaus.jackson下的注释)。

 类似资料:
  • 我对Jackson注释有一个问题,在《大部头1》中似乎被忽略了。我使用Jackson将REST响应序列化为JSON。我打开了设置: openejb。cxf。jax-rs.providers=org。科德豪斯。杰克逊。jaxrs。JacksonJsonProvider在系统中。属性 Jackson序列化工作正常,除了所有似乎被完全忽略的Jackson注释。事件像@JsonIgnore或@JsonPr

  • 问题内容: 我的@Transactionnal注释似乎被忽略了。我对Spring容器的初始化没有任何错误。看来我的方法尚未被Spring TX框架代理。在执行服务的方法期间,JDBCTemplate会引发预期的RuntimeException。问题在于JDBC连接没有回滚,并且更改保持不变。stacktrace没有显示应该包装我的服务方法的代理的任何迹象。 编辑:添加了控制器的代码 编辑2:添加了

  • 例如: 我知道有jackson注解可以这样做,但是我的字段已经用我的持久性注解进行了注解,所以我想避免重复,因为我已经有了我想忽略的注解的字段

  • 我的目标是将jsonObject转换为Class。我只想添加在类中批注的字段。例如:json 对象包含 50 个字段。类有 4 个字段。我只想映射精确的4个字段,而不在类中添加46个加法忽略。 JSON: 类: 用户类没有地址字段。我的目标是排除它,因为它没有注释。

  • 我有一个带有Jackson注释的POJO 因此,当Jackson库被其他框架(如RestEasy)用于自动编组时,这些注释有助于指导序列化和反序列化过程。

  • 有什么想法为什么@primary在这里没有被考虑在内吗?