我在我的 RESTEasy 项目中使用 EclipseLink 的 MOXy 作为 JAXB 实现。由 @XmlDiscriminatorNode 和 Value 等注释带来的 MOXy 的高级功能对我帮助很大。除了一件事:JSON 支持之外,一切都运行良好。我正在使用 RESTEasy 的 JettisonMappedContext 但不幸的是,编组后只有实例变量字段属于我的 JSON 中的抽象超类。
@XmlRootElement
@XmlDiscriminatorNode("@type")
public abstract class Entity {
public Entity(){}
public Entity(String id){
this.id = id;
}
private String id;
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
子类:
@XmlRootElement
@XmlDiscriminatorValue("photo")
public class Photo extends Entity{
private String thumbnail;
public Photo(){}
public Photo(String id) {
super(id);
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail;
}
@XmlElement(name="thumbnail")
public String getThumbnail() {
return thumbnail;
}
}
编组后的 XML:
<object type="photo">
<id>photoId423423</id>
<thumbnail>http://dsadasadas.dsadas</thumbnail>
</object>
编组后的 JSON:
"object":{"id":"photoId423423"}
有没有其他方法可以实现这一目标?
谢谢你。