Java Jackson序列化奇怪的输出

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

我正在使用Jackson将json转换为对象。然而,json看起来是错误的。以下是我所看到的:

"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;
    }
}