Spring MVC - 杰克逊 XML 格式
Spring MVC - Jackson XML format
我希望我的控制器 return 以下 XML:
<?xml version="1.0"?>
<ResponseDTO result=”OK” timestamp=”20110322T152403Z">
<myId>9999.99</myId>
<currency>USD</currency>
</ResponseDTO >
基本上我的 DTO 是这样的:
public class ResponseDTO {
private String myId;
private String currency;
}
我的控制器看起来像这样:
@RequestMapping(produces = MediaType.APPLICATION_XML_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public ResponseDTO doSomething() {
...
return new ResponseDTO();
}
我正在使用以下依赖项,gradle 下面给出的片段:
compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version:'2.8.2'
如何使用 jackson xml 解析器实现 'result=OK' 和 'timestamp=20110322T152403Z' 属性?
使用 JacksonXmlProperty 为 jackson 根元素设置属性,如下所示:
@JacksonXmlRootElement
public class ResponseDTO {
@JacksonXmlProperty(isAttribute=true)
private String response;
@JacksonXmlProperty(localName="myId")
private String myId;
@JacksonXmlProperty(localName="currency")
private String currency;
}
Result:
<ResponseDTO response="test">
<myId>test</myId>
<currency>test</currency>
</ResponseDTO>
我希望我的控制器 return 以下 XML:
<?xml version="1.0"?>
<ResponseDTO result=”OK” timestamp=”20110322T152403Z">
<myId>9999.99</myId>
<currency>USD</currency>
</ResponseDTO >
基本上我的 DTO 是这样的:
public class ResponseDTO {
private String myId;
private String currency;
}
我的控制器看起来像这样:
@RequestMapping(produces = MediaType.APPLICATION_XML_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public ResponseDTO doSomething() {
...
return new ResponseDTO();
}
我正在使用以下依赖项,gradle 下面给出的片段:
compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version:'2.8.2'
如何使用 jackson xml 解析器实现 'result=OK' 和 'timestamp=20110322T152403Z' 属性?
使用 JacksonXmlProperty 为 jackson 根元素设置属性,如下所示:
@JacksonXmlRootElement
public class ResponseDTO {
@JacksonXmlProperty(isAttribute=true)
private String response;
@JacksonXmlProperty(localName="myId")
private String myId;
@JacksonXmlProperty(localName="currency")
private String currency;
}
Result:
<ResponseDTO response="test">
<myId>test</myId>
<currency>test</currency>
</ResponseDTO>