Я использую MOXy EclipseLink в качестве реализации JAXB в моем проекте RESTEasy. Продвинутая функциональность MOXy, которая была представлена аннотациями, такими как @XmlDiscriminatorNode & Value, мне очень помогла. Все работает нормально, кроме одного: поддержка JSON. Я использую JettisonMappedContext из RESTEasy, но, к сожалению, в моем 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"}
Есть ли другой способ добиться этого?
Спасибо.