java - 在 Jaxb 中编码 map 时出现问题

标签 java dictionary jaxb marshalling

我有一个类world,其中包含人类 map 。如果我整理类世界,我会得到以下输出:

<world>
    <humans>
        <human key="2">
            <value>
                <name>Tom</name>
            </value>
        </human>
        <human key="1">
            <value>
                <name>Max</name>
            </value>
        </human>
    </humans>
</world>

但我不想显示“值”标签。它应该看起来像:

<world>
    <humans>
        <human key="2">
            <name>Tom</name>
        </human>
        <human key="1">
            <name>Max</name>
        </human>
    </humans>
</world>

这可能吗?

这是类世界和人类的代码:

@XmlRootElement
public class Human {

    @XmlElement
    private String name;

    public Human(){}
}

@XmlRootElement
public class World {

    private Map<String, Human> humans = new HashMap<String, Human>();

    public World(){}

    @XmlElementWrapper( name = "humans")
    @XmlElement(name = "human")
    public HumanEntry[] getMap() {
        List<HumanEntry> list = new ArrayList<HumanEntry>();
        for (Entry<String, Human> entry : humans.entrySet()) {
            HumanEntry mapEntry =new HumanEntry();
            mapEntry.key = entry.getKey();
            mapEntry.value = entry.getValue();
            list.add(mapEntry);
        }
        return list.toArray(new HumanEntry[list.size()]);
    }

    public void setMap(HumanEntry[] arr) {
        for(HumanEntry entry : arr) {
            this.humans.put(entry.key, entry.value);
        }
    }

    public static class HumanEntry {
        @XmlAttribute
        public String key;

        @XmlElement
        public Human value;
    }

    public void addHuman(String key, Human human){
        this.humans.put(key, human);
    }
}

最佳答案

正如 ilcavero 所指出的那样XmlAdapter 可用于将替代映射应用于 JAXB 中的 Map(或任何类型)。下面是具体示例的链接:

了解更多信息

关于java - 在 Jaxb 中编码 map 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7793283/

相关文章:

java - MessageSourceAware 是特殊情况吗?或者我可以以类似的方式注入(inject)其他依赖项吗?

javascript - .each 中的 jQuery 数组 .map

python - 使用生成器表达式加载选项字典

java - 如何填充 XMLGregorianCalendar()

java - 关闭 podam 中的 java.langObject 初始化

java - 将 JAXB 声明为依赖项。为什么?

java - Intellij JAVA_HOME 变量

java.lang.Math.log被内部调用取代,为什么不是java.lang.Math.exp()?

java - 为什么我的 HttpPost 收不到所有的响应数据?

c++ - STL映射可以与不同大小的键一起使用吗