使用 JacksonXML,我想将未预先确定的元素列表反序列化到 Map<String,String>。我可以使用什么样的注释?

问题描述 投票:0回答:1
java jackson jackson2 jackson-dataformat-xml jackson-annotations
1个回答
0
投票

我使用

@JsonAnySetter
注释将 XML 元素反序列化为
Map<String, String>
。这是一个例子:

public class MyElement {
    private Map<String, String> attributes = new HashMap<>();

    @JsonAnySetter
    public void addAttribute(String name, String value) {
        attributes.put(name, value);
    }

    public Map<String, String> getAttributes() {
        return attributes;
    }
}

在此示例中,addAttribute 方法用

@JsonAnySetter
进行注释,这告诉 JacksonXML 对于在
MyElement
类中没有相应属性的任何 XML 属性调用此方法。然后,该方法将属性名称和值添加到属性映射中。

要将 XML 元素反序列化为

MyElement
对象,您可以使用
XmlMapper
类:

String xml = "<to amount=\"345.00\" service=\"tabylga\" purpose_tsabylga=\"arenda\" account=\"381\"/>";
XmlMapper xmlMapper = new XmlMapper();
MyElement element = xmlMapper.readValue(xml, MyElement.class);

反序列化后,MyElement 对象中的属性映射将包含 XML 元素中的属性名称和值。

© www.soinside.com 2019 - 2024. All rights reserved.