Maison > Questions et réponses > le corps du texte
SpringMVC中使用jackson返回json时如何将枚举转为json
在网上搜过,给出的方案是在要转换的枚举的get方法上加上@JsonValue注解,我加上后报了错
下面是我错误的示例:
StatusEnum:
IndexController:
POM.xml中jackson与Spring的版本号:
报的错:
PHPz2017-04-18 10:03:21
Mon approche consiste à écrire une méthode publique pour la convertir en Map
Implémentez-la simplement aussi facilement que possible. En fait, je pense que l'annotation devrait être placée sur la méthode get de l'instance d'énumération
public class Result {
private StatusEnum status;
...
@JsonValue
public StatusEnum getStatus() {
return status;
}
public void setStatus(status) {
this.status = status;
}
}
Je ne l'ai jamais utilisé auparavant, donc je n'y connais pas grand-chose, mais vous pouvez l'essayer
Je n'ai pas pu résister à ma curiosité et je l'ai essayé. . . Celui ci-dessus n’est pas réalisable. . . Mais n'utilisez pas @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
...
}
Test perso, ça marche
PHP中文网2017-04-18 10:03:21
enum
Par défaut, Jackson ne peut être sérialisé qu'en index et en noms d'énumération. Si vous devez renvoyer un objet {}
json, vous devez implémenter Serializer
Jdk8Module vous-même. StatusEnum
vous-même.
PHPz2017-04-18 10:03:21
Référence : http://blog.csdn.net/sdyy321/...
Vous pouvez jeter un œil aux points suivants :
SerializationFeature.WRITE_ENUMS_USING_TO_STRING
@JsonSerialize
et @JsonDeserialize
;
@JsonCreator
Si vous avez besoin de désérialisation, vous pouvez utiliser @JsonSerialize
et
. . Le premier est flexible. Le second est facile :)@JsonDeserialize
.