JSON编组的自定义属性名称

时间:2016-03-01 14:30:27

标签: json spring jaxb spring-boot

我实现了一个小应用程序,它将一些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"
}

我错过了什么?

1 个答案:

答案 0 :(得分:1)

由于响应的类型是JSON,因此您应该使用@JsonProperty()

然后将@JsonProperty(value = "FIRST_VALUE")@JsonProperty(value = "SECOND_VALUE")添加到您的firstValuesecondValue字段。