【发布时间】:2019-06-23 10:14:06
【问题描述】:
我想将下面的 xml 字符串反序列化为 Java 对象,但出现错误
java.lang.IllegalArgumentException: Conflicting getter definitions for property "service"
这是用于反序列化的 XML 字符串:
<result>
<service>service_id</service>
<date>2019-01-30 12:10:33</date>
<status>0</status>
<service>
<id>123</id>
<name>name</name>
<type>90</type>
</service>
</result>
这是 POJO 对象:
@Data
@JacksonXmlRootElement(localName = "result")
public class CustomResult {
@JacksonXmlProperty(localName = "service")
private String service;
@JacksonXmlProperty(localName = "date")
private String date;
@JacksonXmlProperty(localName = "status")
private Integer status;
@JacksonXmlProperty(localName = "service")
private Service statusObj;
}
@Data
public class Service {
@JacksonXmlProperty(localName = "id")
private Integer id;
@JacksonXmlProperty(localName = "name")
private String name;
@JacksonXmlProperty(localName = "type")
private Integer type;
}
和我的转换器代码:
try {
CustomResult result = new XmlMapper().readValue(xmlString, CustomResult.class);
} catch (IOException e) {
e.printStackTrace();
}
我认为出现这个错误是因为同名是两个参数。我使用其余请求从服务器获取此 xml,并且无法更改参数名称。如何修复此错误?
【问题讨论】:
-
S您不能在 XML 中有两个名称相同的标签。重命名其中之一,例如:
<serviceid>service_id</serviceid> -
我无权访问服务器。服务器开发人员不想修复 xml
-
这个链接的第二种回复方法帮助了我:stackoverflow.com/questions/37812973/…