Java Jackson序列化奇怪的输出
我正在使用Jackson将json转换为对象。然而,json看起来是错误的。以下是我所看到的:Java Jackson序列化奇怪的输出,java,json,jackson,Java,Json,Jackson,我正在使用Jackson将json转换为对象。然而,json看起来是错误的。以下是我所看到的: "interfaces": {"interfaces": [ "HA_1", "HA_2" ]}, 不应该有两个接口。我想看看: "interfaces": [ "HA_1", "HA_2" ]}, 我不知道这是怎么发生的。我可以向您展示我的转换类: @XmlAccessorType(XmlAccessType.NONE) public class InterfacesRep im
"interfaces": {"interfaces": [
"HA_1",
"HA_2"
]},
不应该有两个接口
。我想看看:
"interfaces": [
"HA_1",
"HA_2"
]},
我不知道这是怎么发生的。我可以向您展示我的转换类:
@XmlAccessorType(XmlAccessType.NONE)
public class InterfacesRep implements Serializable {
private static final long serialVersionUID = -1503363608473342020L;
@XmlElement(name = "interface", type = String.class)
private Collection<String> all = new ArrayList<String>();
public InterfacesRep() {}
public InterfacesRep(Collection<String> all) {
this.all = all;
}
public Collection<String> getAll() {
return all;
}
public void setAll(List<String> all) {
this.all = all;
}
}
您知道为什么我会看到两次“接口”,,因为您在两个级别的属性上都定义了它。外部类有一个名为“接口”的属性名,而内部类的集合也被命名为“接口” 在我看来,这个最简单的修复方法是不对集合使用包装器类。把收集的东西放在外面的教室里
另一方面,为什么要使用Jackson的XML注释来序列化JSON?我有这两种注释,因为我可以请求一个可能不完全必要的XML或JSON表示注释:Jackson可以使用它自己的JSON和XML注释(假设您也使用Jackson XML模块,而不是其他什么?)。但是,如果您需要JAXB库,您对JAXB注释的使用也可以。实际上,您应该在输出中有一个“接口”和一个“接口”@AndreiI,这不是我已经有的吗?一个是单数,一个是复数(带和w/o s)。通过以下方式回答:
public class OuterRep {
private static final long serialVersionUID = -1719378545790376294L;
@XmlElement(name = "interfaces", type=InterfacesRep.class)
private InterfacesRep interfaces;
public OuterRep() {
}
public InterfacesRep getInterfaces() {
return interfaces;
}
public void setInterfaces(InterfacesRep interfaces) {
this.interfaces = interfaces;
}
}