使用Moxy将JSON字符串转换为XML对象时遇到问题。 以下是我进行此转换时获得的例外情况:
Exception [EclipseLink-43] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [TENANT] of type [class java.lang.String].
Descriptor: XMLDescriptor(fr.niji.nates.webservices.macd.ws.COMPONENTTYPE --> [])
at org.eclipse.persistence.exceptions.DescriptorException.missingClassForIndicatorFieldValue(DescriptorException.java:940)
at org.eclipse.persistence.internal.oxm.QNameInheritancePolicy.classFromRow(QNameInheritancePolicy.java:278)
[...]
这是COMPONENTTYPE类:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "COMPONENT_TYPE")
@XmlSeeAlso({
COMPONENTDETAILTYPE.class,
MACDRESULTTYPE.Created.class
})
public class COMPONENTTYPE {
@XmlAttribute(name = "type", required = true)
protected String type;
@XmlAttribute(name = "dbid", required = true)
protected int dbid;
public String getType() {
return type;
}
public void setType(String value) {
this.type = value;
}
public int getDbid() {
return dbid;
}
public void setDbid(int value) {
this.dbid = value;
}
}
问题似乎只出现在"类型"属性。
有没有人有想法? 谢谢,
答案 0 :(得分:0)
我找到的解决方案是将注释@XmlDiscriminatorNode添加到类中:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorNode;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "COMPONENT_TYPE")
@XmlSeeAlso({
COMPONENTDETAILTYPE.class,
fr.niji.nates.webservices.macd.ws.MACDRESULTTYPE.Created.class
})
@XmlDiscriminatorNode("@@type")
public class COMPONENTTYPE {
[...]