我有下面这个Java类:
我有以下结果:
@XmlRootElement
@XmlSeeAlso(DataClass.class)
public static class EnvelopeClass<T> {
@XmlElement
public String version;
@XmlElement
public T data;
EnvelopeClass() {
}
EnvelopeClass(String version, T data) {
this.version = version;
this.data = data;
}
}
@XmlRootElement
public static class DataClass {
@XmlElement
public String name;
DataClass() {
}
DataClass(String name) {
this.name = name;
}
}
我正在创建它的实例并将其转换为JSON格式
EnvelopeClass<DataClass> dataClassEnvelopeClass = new EnvelopeClass<DataClass>("1.0", new DataClass("myName"));
我有以下结果:
{"version":"1.0","data":{"@type":"dataClass","name":"myName"}}
我不想在JSON中包含"@type":"dataClass"这样的类型信息,换句话说,我希望得到以下结果:
{"version":"1.0","data":{"name":"myName"}}
当EnvelopeClass没有泛型时,我得到了这个结果。
有没有办法解决这个问题?
<envelopeClass><version>1.0</version><data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="dataClass"><name>myName</name></data></envelopeClass>
,其中xsi:type
是JAXB中泛型的实现方式。 - skaffman