我正在使用这样的RestTemplate:
return this.getForEntity(baseUrl, BasicResponse.class, parameters);
这是BasicResponse类:
public class BasicResponse {
private String status;
private String statusMsg;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getStatusMsg() {
return statusMsg;
}
public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
}
}
不会引发任何异常,但是返回的ResponseEntity主体中的字段为'null'。我认为这是因为该元素没有有效的XML结构(因为没有根元素)。我无法控制已解析的XML。如何映射对象?
答案 0 :(得分:0)
由于XML无效,
我相信您将无法使用RestTemplate.getForEntity
以获得BasicResponse
对象。
尝试一下:
private static final String VALUE_END_TAG = "</blammy>";
private static final String VALUE_START_TAG = "<blammy>";
private XmlMapper xmlMapper; // initialize this correctly, somewhere off page.
method stuff
{
final String actualResponse;
final StringBuilder correctedResponse = new StringBuilder();
final BasicResponse returnValue;
actualResponse = restTemplate.getForEntity(baseUrl, BasicResponse.class, parameters);
correctedResponse.append(VALUE_START_TAG);
correctedResponse.append(actualResponse);
correctedResponse.append(VALUE_END_TAG);
returnValue = xmlMapper.readValue(correctedResponse.toString(), BasicResponse.class);
return returnValue;
}
在开始和结束标记中使用一些合理的值作为元素名称, 也许是“”和“”。
考虑使用一些Jackson注释,
例如@JacksonXmlRootElement(localName = "blammy")
(此本地名称与我的示例匹配)。