杰克逊注释被忽略了

use*_*512 5 java json annotations jetty jackson

我正在尝试使用Jackson注释来重命名序列化期间生成的一些json标签.所有注释都编译良好,当我运行时,杰克逊序列化工作除了所有杰克逊注释完全被忽略.即使像@JsonIgnore或@JsonProperty这样的基本对json响应也没有影响.我在构建路径中拥有的库是:

jsr311-qpi-1.1.1.jar
jackson-[core|databind|annotations]-2.2.0.jar
Run Code Online (Sandbox Code Playgroud)

我正在Eclipse中运行jetty外部程序,外部程序设置如下:

Location: .../apache-maven-2.2.1/bin/mvnDebug.bat
working Directory: ${workspace_loc:/ohma-rest-svr}
Arguments: jetty:run
Run Code Online (Sandbox Code Playgroud)

将远程Java应用程序配置设置为:

Host: localhost
Port: 8000
Run Code Online (Sandbox Code Playgroud)

没有错误消息可以使用,我有点失去了尝试的东西.任何想法,将不胜感激.

这是我需要序列化的类的一些代码示例:

@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;
    }
Run Code Online (Sandbox Code Playgroud)

Sta*_*Man 26

一个相对常见的原因是尝试使用"错误"的注释集:Jackson 1.x和Jackson 2.x注释存在于不同的Java包中,而数据绑定必须与主要版本匹配.这种设计的好处是允许并排使用1.x和2.x版本,而不会产生类加载冲突; 但缺点是你必须确保你有匹配的版本.

最大的问题是框架的使用:许多JAX-RS实现(如Jersey)默认仍然使用Jackson 1.x. 所以我猜你可能间接使用Jackson 1.x,但添加了Jackson 2.x注释.如果是这样,则需要使用1.x注释(低于1 org.codehaus.jackson).

  • 只是为了让别人知道,这就是我遇到的问题.切换到导入1.x注释包,现在一切都很好. (2认同)
  • @StaxMan哈哈,是的,万一它在这个答案森林中迷失了!但老实说,他不接受它太糟糕了. (2认同)