2016-03-01 96 views
0

我實現了一個小應用程序,它將一些JSON數據作爲REST API的一部分提供。由於遺留原因,客戶端對屬性名稱有非常特殊的要求:使用下劃線並寫入大寫字母。JSON編組的自定義屬性名稱

所以我有這個類:

@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

由於響應的類型爲JSON,因此應使用@JsonProperty()

因此,請將@JsonProperty(value = "FIRST_VALUE")@JsonProperty(value = "SECOND_VALUE")添加到您的firstValuesecondValue字段中。