繁体   English   中英

JAXB编组列表地图

[英]JAXB marshaling Map of Lists

我有一份我需要编组的列表地图。 我创建了XML适配器,但我一直在使用java.util.List is an interface, and JAXB can't handle interfaces. 在创建JAXB上下文时。 我该如何编组列表地图?

这是我的代码:

@XmlRootElement(name = "myClass")
public class MyClass  {

    @XmlJavaTypeAdapter(MapOfListsAdapter.class)
    protected Map<Integer, List<Condition>> expectedResults;

我为Map编写了适配器MapOfListsAdapater:

public class MapOfListsAdapter extends XmlAdapter<List<MapOfListsEntry>, Map<Integer, List<Condition>>> {

    @Override
    public List<MapOfListsEntry> marshal(Map<Integer, List<Condition>> v) {...}

    @Override
    public Map<Integer, List<Condition>> unmarshal(List<MapOfListsEntry> v) {...}
}

MapOfListEntry具有以下JAXB注释:

public class MapOfListsEntry {

    @XmlAttribute
    private Integer key;

    @XmlElementRef
    @XmlElementWrapper
    private List<Condition> value;

我想到了。 问题是我的适配器中的ValueType是List,这里的这个List是JAXB无法处理的类型。 将此List包装在适配器中的ValueType的另一个具体类中解决了该问题。

适配器:

public class MapOfListsAdapter extends XmlAdapter<ListWrapper, Map<Integer, List<Condition>>> {

    @Override
    public ListWrapper marshal(Map<Integer, List<Condition>> v) {...}

    @Override
    public Map<Integer, List<Condition>> unmarshal(ListWrapper v) {...}
}

包裹清单:

public class ListWrapper {

    @XmlElementRef
    private List<MapOfListEntry> list;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM