5 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
我的做法是寫個(gè)公用的方法轉(zhuǎn)Map
怎么實(shí)現(xiàn)方便就怎么去實(shí)現(xiàn),其實(shí)我覺(jué)得注解應(yīng)該放在枚舉實(shí)例的get方法上
public class Result {
private StatusEnum status;
...
@JsonValue
public StatusEnum getStatus() {
return status;
}
public void setStatus(status) {
this.status = status;
}
}
我沒(méi)用過(guò)這個(gè)所以也不太清楚,不過(guò)你可以試試
耐不住好奇心我去試了一下。。。上面那個(gè)不可行。。。不過(guò)不用@JsonValue
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum StatusEnum {
STATUS_ERROR("200", "OK"),
STATUS_SUCCESS(404, "Not Found");
private Stringcode;
private String msg;
private Status(String code, String msg) {...}
//getter & setter
...
}
親測(cè) 可行

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
enum
默認(rèn)jackson只能序列化為索引和枚舉名稱,如果你需要返回{}
?json object 需要自已實(shí)現(xiàn)Serializer

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum StatusEnum {
STATUS_ERROR("200", "OK"),
STATUS_SUCCESS(404, "Not Found");
private String code;
private String msg;
private Status(String code, String msg) {...}
//getter & setter
@JsonValue
public String getMsg(){
return msg;
}
...
}
可以返回成msg的值。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
查看官方解釋@jsonvalue
'At most one method of a Class can be annotated with this annotation; if more than one is found, an exception may be thrown.'發(fā)現(xiàn)多個(gè)@jsonvalue會(huì)發(fā)生異常
添加回答
舉報(bào)