Jackson XML标签和具有相同名称的属性

时间:2017-11-09 10:44:13

标签: java xml serialization jackson

我想获得以下XML:

<User id="two">
    <id>one</id>
</User>

我尝试使用Jackson XML mapper:

@JacksonXmlRootElement
public class User {
    private String id;

    private String attributeId;

    public User(final String id, final String attributeId) {
        this.id = id;
        this.attributeId = attributeId;
    }

    @JacksonXmlProperty(localName = "id")
    public String getId() {
        return id;
    }

    @JacksonXmlProperty(localName = "id", isAttribute = true)
    public String getAttributeId() {
        return attributeId;
    }

    public static void main(String[] args) throws IOException {
        final XmlMapper xmlMapper = new XmlMapper();
        final File file = new File("user.xml");
        final User user = new User("one", "two");

        xmlMapper.writeValue(file, user);
    }
}

但我得到的只是这个例外

java.lang.IllegalArgumentException: Conflicting getter definitions for property "id": com.sbconverter.parser.slovoed.User#getId(0 params) vs com.sbconverter.parser.slovoed.User#getAttributeId(0 params)

我可以在一个对象上使用相同的属性和标记名称吗?

1 个答案:

答案 0 :(得分:0)

这是一个已知问题,因此您需要针对此案例执行额外的课程。

在localName(localName =&#34; id&#34;)的id前面添加一个空格可以解决这个问题,但是更推荐它来创建一个新的bean。