使用Jackson的Pojo挑剔的XML
Java 8,Spring 5.x
给
ResponseEntity<Object> responnse = restTemplate.exchange( myUrl, HttpMethod.GET, reqquest, Object.class);
定一些XML
<LinkedHashMap>
<Entity>
<name>Person</name>
<href>../12345</href>
<Attribute>
<name>lastName</name>
<type>String</type>
<value>Nixon</value>
</Attribute>
<Attribute>
<name>firstName</name>
<type>String</type>
<value>Dick</value>
</Attribute>
</Entity>
</LinkedHashMap>
,
@JsonIgnoreProperties(ignoreUnknown=true)
@JacksonXmlRootElement(localName="Person")
@Entity
public class Person implements java.io.Serializable {
private static final long serialVersionUID = 123456789L;
@Id
private Long id;
private String lastName;
private String firstName;
...
}
我如何将其调整到我可以的位置
if( responnse.hasBody()){
Person person = xmlMapper.readValue( responnse.getBody(), Person.class);
...
}
,我认为XMLMLMAPPER至少需要一些自定义来处理ID。
蒂亚(Tia),
仍在努力的史蒂夫(Steve)
Java 8, Spring 5.x
Given
ResponseEntity<Object> responnse = restTemplate.exchange( myUrl, HttpMethod.GET, reqquest, Object.class);
returns some XML
<LinkedHashMap>
<Entity>
<name>Person</name>
<href>../12345</href>
<Attribute>
<name>lastName</name>
<type>String</type>
<value>Nixon</value>
</Attribute>
<Attribute>
<name>firstName</name>
<type>String</type>
<value>Dick</value>
</Attribute>
</Entity>
</LinkedHashMap>
and
@JsonIgnoreProperties(ignoreUnknown=true)
@JacksonXmlRootElement(localName="Person")
@Entity
public class Person implements java.io.Serializable {
private static final long serialVersionUID = 123456789L;
@Id
private Long id;
private String lastName;
private String firstName;
...
}
how do I adjust this to where I can
if( responnse.hasBody()){
Person person = xmlMapper.readValue( responnse.getBody(), Person.class);
...
}
I'm think xmlMapper needs some customizing to handle the id, at the least.
TIA,
Still-struggling Steve
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道是否有优雅和一般的解决方案,但是您可以创建自定义的Deserializer,您可以在其中手动穿越XML并填充人类班级:
然后像这样的
输出一样致电:
ps 这是丑陋且不易于误解的解决方案,当给定XML结构更改时,它将失败,但...
I don't know if there is elegant and general solution, but you can create custom deserializer, where you manually traverse the XML and populate Person class:
and then call like this
Output:
P.S. This is ugly and non-flexible solution, which will fail when given XML structure gets changed but... it just works :)