我正在尝试使用 Jackson 注释来重新命名序列化过程中生成的一些 json 标签。所有注释都编译良好,当我运行时,杰克逊序列化可以正常工作,但所有杰克逊注释都被完全忽略。即使像 @JsonIgnore 或 @JsonProperty 这样的基本的也对 json 响应没有影响。我的构建路径中的库是:
jsr311-qpi-1.1.1.jar
jackson-[core|databind|annotations]-2.2.0.jar
我正在 Eclipse 中运行 jetty 外部程序,外部程序设置为:
Location: .../apache-maven-2.2.1/bin/mvnDebug.bat
working Directory: ${workspace_loc:/ohma-rest-svr}
Arguments: jetty:run
远程 Java 应用程序配置设置为:
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;
}
一个相对常见的原因是尝试使用“错误”的注释集:Jackson 1.x 和 Jackson 2.x 注释位于不同的 Java 包中,并且 databind 必须匹配主要版本。这种设计的好处是可以允许1.x和2.x版本并行使用,不会出现类加载冲突;但缺点是你必须确保你有匹配的版本。
最大的问题是框架的使用:许多 JAX-RS 实现(如 Jersey)默认情况下仍然使用 Jackson 1.x。所以我猜测您可能间接使用 Jackson 1.x,但添加 Jackson 2.x 注释。如果是这样,您需要使用 1.x 注释(下面的注释)org.codehaus.jackson
) 反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)