PriorityQueue与JAXB一起编组

时间:2019-02-19 15:04:29

标签: java jaxb marshalling priority-queue

@XmlRootElement(name = "bookingSystem")
public class BookingSystem {

@XmlJavaTypeAdapter(StringMapAdapter.class)
private Map<String, HashMap<String, PriorityQueue<DateTime>>> takerMap
= new HashMap<String, HashMap<String, PriorityQueue<DateTime>>>();

...

适配器:

public class StringMapAdapter
    extends XmlAdapter<StringMapConverter, Map<String, StringPQueueMap>> {

@Override
public StringMapConverter marshal(Map<String, StringPQueueMap> mapToConvert) throws Exception {
    StringMapConverter myMapType = new StringMapConverter();
    for (Entry<String, StringPQueueMap> entry : mapToConvert.entrySet()) {
        StringMap myMapEntryType = new StringMap();
        myMapEntryType.key = entry.getKey();
        myMapEntryType.value = (Map<String, StringPQueueMap>) entry.getValue();

        // **Problem occurs here**
        myMapType.entry.add(myMapEntryType);
    }
    return myMapType;
}

出现在myMapType.entry.add(myMapEntryType);中的问题

其中的StringPQueueMap是以下内容:

public class StringPQueueMap {

@XmlAttribute
public String key;

@XmlElement(name = "StringPQueueMapObject")
public PriorityQueue<DateTime> value;
}

,对于这两个映射,我的转换器类看起来都相同,但名称为StringMap或StringPQueueMap

    @XmlElementWrapper(name = "bookingMapWrapper")
public List<StringMap> entry = 
          new ArrayList<StringMap>();


       public List<StringMap> getMyMapType() {
           return this.entry;
       }

,这引发了以下异常: javax.xml.bind.MarshalException  -具有链接的例外: [com.sun.istack.internal.SAXException2:类java.util.PriorityQueue或其任何超类对此上下文都是已知的。 javax.xml.bind.JAXBException:此上下文已知类java.util.PriorityQueue或其任何超类。     在com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:311)     在com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:236)     在javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:103)

一般来说,我对使用JAXB和XML文件没有任何经验,只要我到目前为止映射了一些地图,我就设法设法解决了所有问题,但这似乎并不适用PriorityQueue。我怀疑DateTime对象(jodatime库)也可能是这种情况,如果我认为它们不是问题的起因或至少不是问题的一部分。有人可以提供有关如何解决此问题的建议吗,我的目标是将这个相当复杂的自定义对象编组为XML文件,以后再将其解组(尽管我相信如果设法使编组工作正常,我就可以弄清楚该编组问题。 )。

0 个答案:

没有答案