【发布时间】:2020-01-30 17:24:22
【问题描述】:
我有一个 SpringBoot 服务:
型号
public class Payload {
private final String id;
public Payload(String id){
this.id = id;
}
public String getId() {
return this.id;
}
}
控制器
@RestController
@RequestMapping("/payload")
public class PayloadController {
@RequestMapping(method = RequestMethod.POST)
public Payload post(@RequestBody final Payload payload) {
return payload;
}
}
我需要这个控制器能够处理 JSON 和 XML 请求并以相同的格式响应。
如果我将 Content-Type 和 Accept 标头设置为正确的媒体类型,这可以正常工作。
但是,我的 XML 有效负载的结构需要与我的 JSON 稍有不同:
XML:
<Payload>
<id value="some-value"/>
</Payload>
JSON:
{
id: "some-value"
}
我如何确保我的id 被包装在一个 xml 节点中并具有“值”作为属性?
我曾尝试在我的Payload 类上使用@JsonSerialize 和@JsonDeserialize 注释,但一旦我这样做,当POSTing XML 时出现以下错误
{
"timestamp": "2019-10-01T12:06:35.593+0000",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'application/xml;charset=UTF-8' not supported",
"path": "/payload"
}
【问题讨论】:
标签: java spring-boot jackson jackson-dataformat-xml