我实现了一个小应用程序,它将一些JSON数据作为REST API的一部分提供。由于遗留原因,客户端对属性名称有非常特殊的要求:使用下划线并以大写字母书写。
所以我有这个课程:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Values {
public Values(String firstValue, String secondValue) {
this.firstValue = firstValue;
this.secondValue = secondValue;
}
@XmlAttribute(name = "FIRST_VALUE")
private String firstValue;
@XmlAttribute(name = "SECOND_VALUE")
private String secondValue;
public String getFirstValue() {
return firstValue;
}
public String getSecondValue() {
return secondValue;
}
}
作为JSON提供我有一个小控制器:
@RestController
public class Controller {
@RequestMapping(value = "/values")
@ResponseBody
public Values getValues() {
return new Value("v1", "v2");
}
}
我希望控制器提供以下内容
{
"FIRST_VALUE": "v1",
"SECOND_VALUE": "v2"
}
但它忽略了@XmlAttribute注释并传递
{
"firstValue": "v1",
"secondValue": "v2"
}
我错过了什么?
答案 0 :(得分:1)
由于响应的类型是JSON,因此您应该使用@JsonProperty()
。
然后将@JsonProperty(value = "FIRST_VALUE")
和@JsonProperty(value = "SECOND_VALUE")
添加到您的firstValue
和secondValue
字段。