【发布时间】:2013-10-18 04:55:57
【问题描述】:
我有一个简单的类,我想使用 Jackson 将其反序列化为 JSON。我想在我的 JSON 中逻辑地重命名一个字段,而另一个我想与我的 Java 类中定义的名称相同。
@JsonSerialize(include = Inclusion.NON_NULL)
public static class Manifest {
public Manifest(){
this.files = new ArrayList<String>();
}
@JsonProperty("manifest-version")
private String manifestVersion;
private ArrayList<String> files;
@JsonIgnore
public String getManifestVersion() {
return manifestVersion;
}
@JsonIgnore
public void setManifestVersion(String manifestVersion) {
this.manifestVersion = manifestVersion;
}
public ArrayList<String> getFiles() {
return files;
}
public void setFiles(ArrayList<String> files) {
this.files = files;
}
public void addFile(String file) {
this.files.add(file);
}
}
我期望 getter/setter 的 @JsonIgnore 导致 manifestVersion 不成为 JSON 属性(但应该为 manifest-version 创建一个 JSON 属性,我在其中定义了 @JsonProperty。
预期的输出是 { “清单版本”:“2.0” } 实际输出为 { “清单版本”:“2.0”, “清单版本”:“2.0” }
任何帮助将不胜感激。
【问题讨论】:
-
实际输出是多少?
-
更新帖子以包括预期和实际
-
您能否也展示一下如何序列化 Manifest 对象?
-
@Michal,我像这样序列化它,作为测试插入到清单文件 mfS = mapper.writer().withDefaultPrettyPrinter().writeValueAsString(mf);
标签: jackson