Java 在jaxb中删除输出中的外部级别元素

Java 在jaxb中删除输出中的外部级别元素,java,xml,json,jaxb,Java,Xml,Json,Jaxb,默认情况下,jaxb序列化这个类 @XmlRootElement public class MyWrapperClass { public Existing existing; public Long myField; } 例如: { "existing": { "id": 42, "fieldA": "the answer", }, "myField": 0, } 有没有办法让输出变成这样 { "id": 42

默认情况下,jaxb序列化这个类

@XmlRootElement
public class MyWrapperClass {
    public Existing existing;
    public Long myField;
}
例如:

{
    "existing": {
        "id": 42,
        "fieldA": "the answer",
    },
    "myField": 0,
}
有没有办法让输出变成这样

{
    "id": 42,
    "fieldA": "the answer",
    "myField": 0,
}
换句话说,移除外部现有元素

请注意,无法更改现有类。 实际上,包装的原因是我们希望在输出中使用新字段myField


提前感谢。

删除包装可能非常困难,因为编组和解编组过程不知道在哪里查找属性。有一个更好的解释可以解释

然而,我看到的最简单的方法是忽略现有对象的编组,并将其属性添加到MyWrapperClass中


如果您使用的是fasterxml com.fasterxml.jackson.annotation,那么请看一看,这只是需要从中删除包装器的较大类的一个简短示例,还是您正在处理的实际类?该类基本上就是我正在使用的类。这有关系吗?好吧,现在我明白你评论的原因了。现有类有许多字段,可能会在稍后更新。这是否意味着我在这里运气不佳?
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

@XmlRootElement
public class MyWrapperClass {

    @XmlTransient
    public Existing existing;
    public Long myField;


    @XmlElement(name="id")
    public int getExisitingId() {
        return existing.id;
    }

    @XmlElement(name="fieldA")
    public String getExistingFieldA() {
        return existing.fieldA;
    }

}