我正在努力在springdoc openapi库中生成正确的xml示例。
控制器:
@RestController
@RequestMapping(produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public class MyController {
@GetMapping
public MonetaryValue getMonetaryValue() {
return new MonetaryValue(BigDecimal.ONE, "EUR");
}
}
模型
@Schema(name="price", description = "Monetary value")
@JacksonXmlRootElement(localName = "price")
public class MonetaryValue {
@Schema(example = "EUR")
@JsonProperty("cur")
@JacksonXmlProperty(localName = "cur", isAttribute = true)
private String currency;
@Schema(example = "1.00")
@JsonProperty("val")
@JacksonXmlText
private BigDecimal value;
// getters, setter ...
}
用头调用的终结点 Accept: application/xml
返回预期结果:
<price cur="EUR">1</price>
然而,在springdoc中,jackson注解似乎被忽略了。swagger ui中显示的示例显示:
<value>
<cur>EUR</cur>
<val>1</val>
</value>
我还尝试添加jaxb注解。
@Schema(name="price", description = "Monetary value")
@JacksonXmlRootElement(localName = "price")
public class MonetaryValue {
@Schema(example = "EUR")
@JsonProperty("cur")
@JacksonXmlProperty(localName = "cur", isAttribute = true)
@XmlAttribute(name = "cur")
private String currency;
@Schema(example = "1.00")
@JsonProperty("val")
@JacksonXmlText
@XmlValue
private BigDecimal value;
// getters, setter ...
}
这在一定程度上有帮助,属性显示正确,但是 @XmlValue
注解似乎被忽略了。值显示在子元素中 val
而不是元素的文本。
<value cur="EUR">
<val>1</val>
</value>
json示例毫无问题地工作。
github上的演示项目。
谢谢你的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!